1

我有一个 JSON 数组,我将其转换为 PHP 数组,生成一系列 ID,例如:

   Array
   (
      [0] => 2343
      [1] => 4345
      [2] => 4432
      [3] => 3456
   )

我想将这些图像 ID 插入到具有公共画廊 ID 的数据库中 - 如果我要单独编写每个查询,它会是什么样子:

$query1 = "INSERT INTO gallery_media (media_id, gallery_id) VALUES ('2343', '1')";
$query2 = "INSERT INTO gallery_media (media_id, gallery_id) VALUES ('4345', '1')";
$query3 = "INSERT INTO gallery_media (media_id, gallery_id) VALUES ('4432', '1')";
$query4 = "INSERT INTO gallery_media (media_id, gallery_id) VALUES ('3456', '1')";

我将如何以某种方式循环它以使其尽可能简单高效?任何帮助将非常感激。

4

6 回答 6

5

试试这个

$sql = "INSERT INTO gallery_media (media_id, gallery_id) VALUES ";
foreach($ids as $id) {
    $sql .= "('$id', '1'),";
}
$sql = rtrim($sql,",");
于 2013-03-11T07:26:41.360 回答
2

是时候使用准备好的语句了!

$pdo = new \PDO('...');
$sth = $pdo->prepare("INSERT INTO gallery_media (media_id, gallery_id) VALUES (?, '1')");
foreach ($data_array as $value)
    $sth->execute(array($value));
于 2013-03-11T07:40:38.543 回答
1

只需遍历数组。前任。:

 foreach ($your_array as $item){
     $query = sprintf("INSERT INTO gallery_media (media_id, gallery_id) VALUES (%d,1)",$item);
     //Now execute query
 }
于 2013-03-11T07:27:28.253 回答
1

简单来说

foreach ($id_array as $id) {
  $query = "INSERT INTO gallery_media (media_id, gallery_id) VALUES ('$id', '1')";
  // execute your query
}
于 2013-03-11T07:27:39.283 回答
1

试试这个:

foreach( (array) $data_arr as $key => $value )
{
$query = "INSERT INTO gallery_media (media_id, gallery_id) VALUES ('$value', '1')";
}
于 2013-03-11T07:28:29.440 回答
1

我认为最短的方法是使用 implode func 一次创建整个查询。尝试这样的事情:$query = "INSERT INTO gallery_media (media_id, gallery_id) VALUES ('".implode("','1'),",$vals_array)."')";

于 2013-03-11T09:26:24.380 回答