1

PHP配列に変換するJSON配列があり、次のような一連の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

最短の方法は、implode func を使用してクエリ全体を一度に作成することだと思います。次のようなことを試してください:$query = "INSERT INTO gallery_media (media_id, gallery_id) VALUES ('".implode("','1'),",$vals_array)."')";

于 2013-03-11T09:26:24.380 に答える
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 に答える