[英]Multiple SQL Queries at once
我的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);
然后在循环外处理查询以插入大量数据,而不是每次在循环内处理查询,但这只是在数据库中插入一行,我在这里做错了什么?
您可以使用mysqli_multi_query
看示例在这里
注意 :不要使用mysql_query
它现在已被弃用,将很快删除
可以使用PDO :: query或mysql :: query代替mysql_query
,它们是新的并且注入安全
$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);
就像这样:
插入test
。 tes
( id
, date_format
)VALUES(NULL,'2014-03-20'),(NULL,'2014-03-22');
如果您使用的是这种方法。 选择查询只有一次会触发数据库,因此它将更快并且对数据库的负载更少。
$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的每次运行中
正如所有建议一样,使用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) );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.