使用单个查询插入多行


Insert multiple rows using single query

我想在单个查询中插入多行。

$firstname = array('Arfan','Awais','Ahmad'.....);
$lastname = array('Haider','k','Raza'..........);
插入数据:

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

如果只有三条记录,我可以很容易地做到。
如果我不知道有多少记录存在,那么我就不能使用上面的方法。
那我做了什么?

更新:
如果我不知道数组中记录的数目。我可以简单地用foreach loop来做这个但这会降低性能。

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

现在我使用多查询。我认为单个查询对性能很好。

FOR ONE COLUMN:
如果我只有一列,那么很容易使用单个查询。

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

但是这里是多列的我怎么做呢?
谢谢…

如果$firstname$lastname数组长度相同,则使用for循环

$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 ,

尝试一下

$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;
?>

假设您有一个值数组,例如$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;