我的PHP中有一个循环,我在里面运行一个SQL查询:
foreach($records as $result) {
$sql2.="INSERT into voipwallboard_ast_queue_log (time, callid, queuename, agent, event, arg1, arg2, arg3, queue_id) values ('".$result["time"]."', '".$result["callid"]."', '".$result["queuename"]."', '".$result["agent"]."', '".$result["event"]."', '".$result["arg1"]."', '".$result["arg2"]."', '".$result["arg3"]."', '".$result["queue_id"]."'); ";
}
$rs2=mysql_query($sql2,$conn);
然后处理循环之外的查询来插入数据加载而不是每次在循环内处理查询但是它只在我的数据库中插入一行,我在这里做错了什么?
答案 0 :(得分:0)
答案 1 :(得分:0)
您可以使用mysqli_multi_query
查看示例HERE
注意:请勿使用mysql_query
现已弃用,很快就会删除
而不是mysql_query
您可以使用PDO::query或mysql::query这些是新的和注射安全的
答案 2 :(得分:0)
$sql2 ="INSERT into voipwallboard_ast_queue_log (time, callid, queuename, agent, event, arg1, arg2, arg3, queue_id) values ";
foreach($records as $result) {
$sql2.=" ('".$result["time"]."', '".$result["callid"]."', '".$result["queuename"]."', '".$result["agent"]."', '".$result["event"]."', '".$result["arg1"]."', '".$result["arg2"]."', '".$result["arg3"]."', '".$result["queue_id"]."'), ";
}
rtrim($sql2, ",") // Delete the last comma
$rs2=mysql_query($sql2,$conn);
类似于:
INSERT INTO test
。tes
(id
,date_format
)
VALUES(NULL,'2014-03-20'),(NULL,'2014-03-22');
如果您使用此方法。只有一次选择查询将触发db,因此它将更快,更少负载到您的数据库。
答案 3 :(得分:0)
$sql2="INSERT into voipwallboard_ast_queue_log (time, callid, queuename,
agent, event,arg1, arg2, arg3, queue_id) values";
foreach($records as $result) {
$sql2.="('".$result["time"]."', '".$result["callid"]."', '".
$result["queuename"]."', '".$result["agent"]."', '".
$result["event"]."', '".$result["arg1"]."', '".
$result["arg2"]."', '".$result["arg3"]."', '".$result["queue_id"]."'),; ";
}
rtrim($sql2, ",")
$rs2=mysql_query($sql2,$conn);
在整个insert语句的循环insetad的每次运行中都应追加值之后的查询部分
答案 4 :(得分:0)
正如所有人所建议的那样,使用mysqli_multi_query
。
相关,但无关。您应该将查询存储在一个数组中,并用逗号进行内嵌,而不是连接
$sql ="INSERT into voipwallboard_ast_queue_log (time, callid, queuename, agent, event, arg1, arg2, arg3, queue_id) values ";
$inserts = array();
foreach($records as $result)
$inserts[] ="INSERT into voipwallboard_ast_queue_log (time, callid, queuename, agent, event, arg1, arg2, arg3, queue_id) values ('".$result["time"]."', '".$result["callid"]."', '".$result["queuename"]."', '".$result["agent"]."', '".$result["event"]."', '".$result["arg1"]."', '".$result["arg2"]."', '".$result["arg3"]."', '".$result["queue_id"]."');";
$mQuery = mysqli_multi_query( $sql . implode(',', $inserts) );