动态插入php mysql及其性能

动态插入php mysql及其性能,php,mysql,performance,insert,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_nam

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

 }
$directory=“portfolio_images/$id/Thumbs/”;
$images=glob(“$directory.*.jpg”);

对于使用此解决方案的($i=0;$i),您将向数据库发送多达12个insert查询——这意味着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')
$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());
请参阅MySQL的手册中——有一个这样的查询示例


这意味着您可以先更改代码以构建该查询,然后只调用MySQL一次

没有经过测试,但我想你可能看起来有点像这样:

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')
$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());
$values=array();
$directory=“portfolio_images/$id/Thumbs/”;
$images=glob(“$directory.*.jpg”);

对于使用此解决方案的($i=0;$i),您将向数据库发送多达12个insert查询——这意味着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')
$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());
请参阅MySQL的手册中——有一个这样的查询示例


这意味着您可以先更改代码以构建该查询,然后只调用MySQL一次

没有经过测试,但我想你可能看起来有点像这样:

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')
$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());
$values=array();
$directory=“portfolio_images/$id/Thumbs/”;
$images=glob(“$directory.*.jpg”);
对于($i=0;$i)
  • 您的代码中有错误。不是$images[0],而是
    $images[$i]
  • 您的代码未能遵循正确的SQL语法。
    $images[$i]=mysql\u real\u escape\u string($images[$i])
    必须添加

  • 是的,正如帕斯卡所说,可以用另一种方法来做

  • 不,没有性能问题
  • 使用
    或die()
  • 您的代码中有错误。不是$images[0],而是
    $images[$i]
  • 您的代码未能遵循正确的SQL语法。
    $images[$i]=mysql\u real\u escape\u string($images[$i])
    必须添加

  • 是的,正如帕斯卡所说,可以用另一种方法来做

  • 不,没有性能问题
  • 使用
    或die()