我想在单个查询中插入多行。
$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;