使用单个查询插入多行

时间:2013-06-12 04:05:14

标签: php mysql

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

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

但这里有多栏我怎么能为那些人做到这一点 感谢.....

3 个答案:

答案 0 :(得分: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 ,

答案 1 :(得分: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;
?>

答案 2 :(得分: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;