-1

我是 PHP 的初学者。我正在尝试将大量项目插入数据库。我正在使用for循环和mysqli_query命令。

我的伪代码是这样的:

for ($i=0; $i<50000; $i++) {
  mysqli_query($con, "INSERT INTO users (name, age) VALUES ('$name','$age'); ") ;

}

我的代码运行了几百个循环,然后噗:致命错误:xxx 行的 xxx 超过 30 秒的最大执行时间

对我来说,唯一的解决方案是每次循环中断后手动增加我的计数器。

还有其他解决方案吗?请帮忙!

4

3 回答 3

5

不要一次查询每条记录。您可以使用一条语句进行多次插入。下面的示例一次执行 50 个。您可能可以安全地将其增加到 100 甚至 500。

$counter = 0;
$query = 'INSERT INTO users (name, age) VALUES ';
for ($i=0; $i<50000; $i++) {
  $counter++;
  $sql .= "('$name','$age'),"; 
  // execute query every 50 records
  if ($counter % 50 === 0) {
      $sql = rtrim($sql, ',');
      mysqli_query($con, $query . $sql) ;
      $sql = '';
  }
}
于 2014-09-25T13:15:22.190 回答
0

最有帮助的答案是 Jay Blanchard 的评论:

试试这个set_time_limit()功能。调用set_time_limit(0)将删除执行脚本的任何时间限制。

我在页面的开头插入了 set_time_limit(0),我的 PHP 脚本现在可以完美运行了!

于 2015-01-06T21:08:50.207 回答
0

尝试接住

for ($i=0; $i<50000; $i++) {
  try {
    mysqli_query($con, "INSERT INTO users (name, age) VALUES ('$name','$age'); ") ;
  } catch ($e) {
    // You can log $e here if you want
    // It would also probably be good to print out your query 
    // so you can go back and try it again later
  }

}
于 2014-09-25T13:14:39.643 回答