php - 动态插入php mysql和性能

标签 php mysql performance insert

我有一个图像文件夹/数组,可能是 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/

相关文章:

php - 如何在 Linux 系统上用 PHP 启动后台进程并将用户 ajax 输入重复写入其标准输入

performance - 有什么方法可以提高 Dart (dart2js) 编译时间吗?

c - 具有 C 函数的高级语言

php - 我来自 menu.ctp 的 img 链接在 view.ctp 和 login.ctp 中消失了

php - 使用 jQuery .toggleClass 的可选图像或使用 php/css 作为复选框的图像,大多数用户可以使用哪种方法?

mysql - 合并来自2个供应商相同产品但不同ID的两个mysql表

php - 从 Import.io 在 MySQL DB 中导入 JSON

c++ - 提高C++程序中的I/O性能[外部合并排序]

python - 原子饲料 : script to combine multiple <author> items into one?

php - MySQL 中日期的混合排序