2013-04-25 116 views
0

我的查询就没事了,但我需要检查是否有该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 
+0

您可以发布此查询与您的foreach循环?你的查询看起来没问题。 – 2013-04-25 15:32:41

+0

文档 - [set_time_limit](http://php.net/manual/en/function.set-time-limit.php)。 – Devart 2013-04-25 15:36:42

+0

如果您使用的是'mysqli_real_escape_string',那么您做错了。请使用[SQL占位符](http://bobby-tables.com/php)和[bind_param](http://php.net/manual/en/mysqli-stmt.bind-param.php)来进行转义。你这样做的方式,如果你不小心错过了一个转义调用,你的整个应用程序可以被SQL注入漏洞破坏。 – tadman 2013-04-25 16:09:14

回答

2

这是因为你没有设置你的脚本的时间石灰。

你有两个选择,使其工作:
1 /使用set_time_limit()在你的PHP脚本的顶部
2 /在你php.ini配置文件

如果是ponctually一个的personnal脚本更改此值,我建议你使用第一种解决方案。

编辑:为进一步吃茶阅读本http://fr2.php.net/set_time_limit