将所有 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";
}
}
}
}
?>
存储此类内容的最佳方式是什么? (仅一次)在 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";
}
}
}
}
?>