将所有 RGB 值存储在数据库中

Store all RGB values in a database

存储此类内容的最佳方式是什么? (仅一次)在 MYSQL 数据库中? 它需要将所有 RGB 值插入 table.

$colors = colourArray(0, 255, $con);
function colourArray($start, $number, $con) {
    foreach(range($start,$number) as $r) {
        foreach(range($start,$number) as $g) {
            foreach(range($start,$number) as $b) {
                mysqli_query($con, 'INSERT INTO rgbcolors (r,g,b) VALUES ('.$r.','.$g.','.$b.')');
            }
        }
    }
}

这可行,但一次完成 1 个查询需要很长时间..

有人知道更简洁的方法吗?

您一次可以插入不止一组值。

$colors = colourArray(0, 255, $con);
function colourArray($start, $number, $con) {

    $colors = array();

    foreach(range($start,$number) as $r) {
        foreach(range($start,$number) as $g) {
            foreach(range($start,$number) as $b) {
                $colors[] = '('.$r.','.$g.','.$b.')';
            }
            // this could be moved to the parent foreach if you have enough memory to allocate to this.
            mysqli_query($con, 'INSERT INTO rgbcolors (r,g,b) VALUES ' . implode(',', $colors));
            $colors = array();
        }
    }

}

您可以将 INSERT 附加到一个长字符串中。确保以分号结束每个 INSERT。

$sql = $sql . 'INSERT INTO rgbcolors (r,g,b) VALUES ('.$r.','.$g.','.$b.');';

然后循环之后:

mysqli_query($con, $sql);

但是,可以发送到 MYSQL 数据库的字符串长度有最大限制。 See this SO article for more info。因此,您可能需要每隔 1,000 或 10,000 次迭代发送一次数据。 10,000 将是 2 到 3 MB 的字符串。

您可以将插入批处理到单个语句中。

INSERT INTO rgb_colors VALUES(r,g,b),(r,g,b),(r,g,b)

我稍微修改了你的函数以删除 $con 东西,因为我没有在这里使用它,但这里有一个 INSERT(可能太大了),所有颜色都在它。

在现实世界中,您希望一次创建约 20-30 个批次。

在此处查看结果:http://codepad.org/dkuZpt10

<?php

colourArray(0, 255);

function colourArray($start, $number) {
    echo "INSERT INTO rgbcolors VALUES \n";
    foreach(range($start,$number) as $r) {
        foreach(range($start,$number) as $g) {
            foreach(range($start,$number) as $b) {
                echo "($r,$g,$b),\n";
            }
        }
    }
}

?>