1

単一のクエリに複数の行を挿入したい。

$firstname = array('Arfan','Awais','Ahmad'.....);
$lastname = array('Haider','k','Raza'..........);

データの挿入:

INSERT INTO `table_nmae`(firstname,lastname)
VALUES
('Arfan','Haider'),('Awais','k'),('Ahmad','Raza');

この3レコードだけあれば、とても簡単にできます。
存在するレコードの数がわからない場合は、上記を使用できません。
それから私は何をしましたか?

更新:
配列内のレコード数がわからない場合は、単純foreach loopにこれを行うことができますが、これによりパフォーマンスが低下します。

foreach($firstname as $f){
foreach($lastname as $l){
   INSERT INTO `table_name`(firstname,lastname)
   VALUES('$f','$l');
}

}

今回はマルチクエリを使っていますが、パフォーマンス的にはシングルクエリの方が良いと思います。

FOR ONE COLUMN:
列が 1 つしかない場合、単一のクエリを使用するのは非常に簡単です。

INSERT INTO `table_name`(firstname) VALUES
.implode(',', $firstname);

しかし、ここに複数列がありますが、どうすればそれらを行うことができますか。
ありがとう.....

4

3 に答える 3

0

$values_arr などの値の配列があるとします。

$count = count( $values_arr );

$query = "INSERT INTO `table_nmae`(firstname,lastname) VALUES ";
for($i = 0; $i < $count; $i++ )
{
    if( $i == 0)
      $query .= "('{$values_arr[$i]['firstname']}', '{$values_arr[$i]['lastname']}')";
    else
     $query .= ",('{$values_arr[$i]['firstname']}', '{$values_arr[$i]['lastname']}')";
}
echo $query;
于 2013-06-12T04:37:11.120 に答える
0

と配列が同じ長さのfor場合はループを使用$firstname$lastname

$str = "INSERT INTO `table_nmae`(firstname,lastname) VALUES"; // create string of query
for($i = 0 ;$i< count($firstname); $i++) {
    $str .= "('" . $firstname[$i] . "','" . $lastname[$i] . "'),"; //append the values
}
$str = trim($str, ","); // remove last ,
于 2013-06-12T04:12:07.633 に答える
0

試す

$size_of_array = count( $firstname );

$query = "INSERT INTO `table_nmae`(firstname,lastname) VALUES ";
for($i = 0; $i < $size_of_array; $i++ )
{
    if( $i !== ($size_of_array-1))
      $query .= "('{$firstname[$i]}', '{$lastname[$i]}'),";
    else
     $query .= "('{$firstname[$i]}', '{$lastname[$i]}')";
}
echo $query;
?>
于 2013-06-12T04:14:20.333 に答える