我有一个图像文件夹/数组,可能是 1 个,最多 12 个。我需要做的是动态添加它们,以便将图像添加到图像表中。
目前我有
$directory = "portfolio_images/$id/Thumbs/";
$images = glob("" . $directory . "*.jpg");
for ( $i= 0; $i <= count($images); $i += 1) {
mysql_query("INSERT INTO project_images (image_name, project_id)VALUES ('$images[0]', '$id')") or die(mysql_error());
}
这很好,但感觉不对,性能如何?有没有更好的办法?
图像的最大数量永远只会是 12。
最佳答案
使用此解决方案,您最多可以向数据库发送 12 个插入查询——这意味着 PHP 和 MySQL 之间最多可以进行 12 次调用。
一种可能更快的方法是只发送一个 SQL 查询,这会一次插入多行。
那个 SQL 查询看起来像这样:
INSERT INTO project_images (image_name, project_id)
VALUES ('image name 1', 'id_1'),
('image name 2', 'id_2'),
('image name 3', 'id_3'),
('image name 4', 'id_4')
参见 12.2.5. INSERT Syntax在 MySQL 的手册中——有一个这样的查询的例子。
这意味着您可以更改代码,首先构建该查询;然后才调用 MySQL 一次。
没有测试,但我想你的可能看起来有点像这样:
$values = array();
$directory = "portfolio_images/$id/Thumbs/";
$images = glob("" . $directory . "*.jpg");
for ( $i= 0; $i <= count($images); $i += 1) {
$values[] = "('$images[0]', '$id')";
}
$values_str = implode(', ', $value);
mysql_query("INSERT INTO project_images (image_name, project_id) VALUES $values_str") or die(mysql_error());
关于php - 动态插入php mysql和性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2651114/