在循环中跳过错误? (PHP)

时间:2011-08-18 06:09:35

标签: php loops error-handling skip

我有一个代码循环的循环,并且在每个循环中它连接到不同的服务器然后进行MySQL查询。但是,有时其中一个循环/查询无法到达结尾并且所有代码都会中断。有没有办法,如果循环给出错误然后跳过进程/移动到下一个循环?

4 个答案:

答案 0 :(得分:2)

正如上面的评论所述,正确的方法是在try...catch区块内。

要了解有关这些内容的更多信息,您可以阅读here

谢谢@Paul。

答案 1 :(得分:1)

在该循环内部,检查连接,如果已建立连接,请执行逻辑。因此,如果没有建立连接,将跳过逻辑部分。

答案 2 :(得分:1)

使用“继续”跳到循环中的下一个项目:

continue

答案 3 :(得分:1)

这取决于你是否使用php的内置 mysql mysqli 或某些第三方库。但作为一般规则,我会推荐以下逻辑。

  1. 循环开始
  2. 连接
  3. 检查连接确定
  4. 使用 SHOW TABLES 查询检查可能缺少的表,或者如果您有权限检查保存架构信息的mysql数据库。您也可以在选择数据库模式之前执行此操作,以使用 SHOW DATABASES 查看模式是否存在。
  5. 如果表存在,请对其进行逻辑并断开连接 - 否则continue移动到循环的下一次迭代
  6. loop end
  7. 根据您在相关表格中所做的工作,您还可以使用 @ 前缀(例如 @mysql_query )来抑制查询中的任何错误,然后检查数量受影响的行。如果你做了一个选择,你可以检查你的结果集,看看你有什么回来等等。我不喜欢使用 @ 但是应该注意从现有表中选择一个是空的,类似的情况可能导致奇怪的行为取决于您的代码。 Try / Catch 是处理错误控制流程的更好方法。但实际上抛出一个异常相比之下是一个相当缓慢的过程,因为所有的工作都围绕着连接到数据库,所以如果这个循环可以抛出很多异常,那么减速它可能不是一个好主意。 。此外,当使用它来跳过循环中的一个步骤时,某些人可能很难遵循逻辑。因此,像 @ 这样的东西可以接受;)