1

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

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

但这里是多列,我该如何为那些人做到这一点。
谢谢.....

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 回答