繁体   English   中英

一次多个SQL查询

[英]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);

然后在循环外处理查询以插入大量数据,而不是每次在循环内处理查询,但这只是在数据库中插入一行,我在这里做错了什么?

http://uk1.php.net/mysql_query

Quote:mysql_query()发送一个唯一查询(不支持多个查询)

另请注意,现已弃用MySQL扩展。

您可以使用mysqli_multi_query看示例在这里

注意 :不要使用mysql_query它现在已被弃用,将很快删除
可以使用PDO :: querymysql :: 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 tesiddate_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM