【问题标题】:Timeout on "ON DUPLICATE KEY UPDATE"“ON DUPLICATE KEY UPDATE”超时
【发布时间】:2013-04-25 15:29:43
【问题描述】:

我的查询很好,但我需要检查 ID 和日期/时间字段是否有重复项,所以我使用了

mysqli_query($link, "
        INSERT INTO wsmdata VALUES ('', '".mysqli_real_escape_string($link, $_POST['wsmID'])."',
 '".mysqli_real_escape_string($link, $a[0])." ".mysqli_real_escape_string($link, $a[1])."', '".mysqli_real_escape_string($link, $a[2])."')
        ON DUPLICATE KEY
        UPDATE bar = '".mysqli_real_escape_string($link, $a[2])."'") or die (mysqli_error($link));

我有一个循环遍历所有上传文件的 foreach 循环。它将 1008 行处理到数据库中,然后我得到:

Fatal error: Maximum execution time of 30 seconds exceeded in F:\XAMPP\htdocs\logsysteem\adddata.php on line 30

【问题讨论】:

  • 你能用你的 foreach 循环发布这个查询吗?您的查询看起来没问题。
  • 文档 - set_time_limit.
  • 如果你使用mysqli_real_escape_string,你就错了。请使用SQL placeholdersbind_param 进行转义。你这样做的方式,如果你不小心错过了一个转义调用,你的整个应用程序可能会被 SQL 注入错误破坏。

标签: php mysql timeout


【解决方案1】:

这是因为您没有设置脚本的时间期限。

您有两种选择可以让它发挥作用:
1/ 在您的 php 脚本顶部使用 set_time_limit()
2/ 在你的 php.ini 配置文件中改变这个值

如果是个人脚本,我建议您使用第一个解决方案。

编辑:如需进一步说明,请阅读此http://fr2.php.net/set_time_limit

【讨论】:

    猜你喜欢
    • 2011-05-16
    • 1970-01-01
    • 2014-03-10
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    相关资源
    最近更新 更多