1

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

4

4 回答 4

2

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

要了解有关这些的更多信息,您可以在此处阅读它们。

谢谢@保罗。

于 2011-08-18T06:24:50.353 回答
1

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

于 2011-08-18T06:11:21.607 回答
1

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

继续

于 2011-08-18T06:12:26.023 回答
1

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

  1. 循环开始
  2. 连接
  3. 检查连接正常
  4. 使用SHOW TABLES查询检查可能丢失的表,或者您是否有权限检查保存模式信息的 mysql 数据库。您也可以在选择数据库架构之前执行此操作,以查看您的架构是否存在使用SHOW DATABASES
  5. 如果表存在,请执行您的逻辑并断开连接 - 否则继续移动到循环的下一次迭代
  6. 循环结束

根据您在相关表上所做的工作,您还可以使用@mysql_query之类的@前缀抑制查询中的任何错误,然后检查受影响的行数。如果您进行选择,您可以检查您的结果集以查看是否有任何返回等。虽然我不喜欢使用@,但应该注意的是,从现有的空表中选择可能会导致类似情况根据您的代码,出现奇怪的行为。试着抓是处理错误控制流的更好方法。但实际上抛出异常是一个相当缓慢的过程,因为所有的工作都围绕着连接到各地的数据库,如果这个循环可能会抛出很多异常,那么进一步减慢它可能不是一个好主意. 此外,当使用它跳过循环中的一个步骤时,某些人可能很难遵循逻辑。因此像@这样的东西在这里可以接受;)

于 2011-08-18T06:41:21.120 回答