Php 跳过循环中的错误?(菲律宾)

Php 跳过循环中的错误?(菲律宾),php,loops,error-handling,skip,Php,Loops,Error Handling,Skip,我有一个循环,其中代码循环,在每个循环中它连接到不同的服务器,然后进行MySQL查询。但是,有时其中一个循环/查询无法到达终点,所有代码都会中断。是否有一种方法,如果循环出现错误,则跳过进程/移动到下一个循环?在该循环中,检查连接,如果连接成功,则执行逻辑。因此,如果未建立连接,则将跳过逻辑部分。在该循环中,检查连接,如果建立连接,则执行逻辑。因此,如果未建立连接,则将跳过逻辑部分。使用“继续”跳到循环中的下一项: 使用“继续”跳到循环中的下一项: 如上所述,正确的方法是在try…catch块中

我有一个循环,其中代码循环,在每个循环中它连接到不同的服务器,然后进行MySQL查询。但是,有时其中一个循环/查询无法到达终点,所有代码都会中断。是否有一种方法,如果循环出现错误,则跳过进程/移动到下一个循环?

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

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

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

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


如上所述,正确的方法是在
try…catch
块中执行此操作

要了解更多关于这些的信息,您可以阅读它们


谢谢@Paul。

如上所述,正确的方法是在
try…catch
块中执行此操作

要了解更多关于这些的信息,您可以阅读它们


谢谢@Paul。

这取决于您是否使用php内置的mysqlmysqli或其他第三方库。但作为一般规则,我建议采用以下逻辑

  • 循环启动
  • 连接
  • 检查连接是否正常
  • 使用SHOW TABLES查询检查可能缺少的表,或者如果您有权限,请检查保存架构信息的mysql数据库。您也可以在选择db模式之前执行此操作,以查看您的模式是否存在,方法是使用SHOW DATABASES
  • 如果表存在,请针对它执行逻辑并断开连接,否则将移动到循环的下一个迭代
  • 环端

  • 根据您对相关表所做的工作,您还可以使用@前缀(如@mysql\u query)抑制查询中的任何错误,然后检查受影响的行数。如果您进行选择,您可以检查结果集以查看是否返回了任何内容等。但我不喜欢使用@,应该注意的是,从空的现有表中进行选择以及类似情况可能会导致奇怪的行为,具体取决于您的代码Try/Catch是处理错误控制流的更好方法。但是实际上抛出一个异常相对来说是一个相当缓慢的过程,因为所有的工作都围绕着连接各地的数据库展开,如果这个循环可能抛出很多异常,那么将其速度减慢甚至更多可能不是一个好主意。此外,当使用它来跳过循环中的一个步骤时,有些人可能很难遵循逻辑。因此,这里可以接受类似@的内容;)

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

  • 循环启动
  • 连接
  • 检查连接是否正常
  • 使用SHOW TABLES查询检查可能缺少的表,或者如果您有权限,请检查保存架构信息的mysql数据库。您也可以在选择db模式之前执行此操作,以查看您的模式是否存在,方法是使用SHOW DATABASES
  • 如果表存在,请针对它执行逻辑并断开连接,否则将移动到循环的下一个迭代
  • 环端

  • 根据您对相关表所做的工作,您还可以使用@前缀(如@mysql\u query)抑制查询中的任何错误,然后检查受影响的行数。如果您进行选择,您可以检查结果集以查看是否返回了任何内容等。但我不喜欢使用@,应该注意的是,从空的现有表中进行选择以及类似情况可能会导致奇怪的行为,具体取决于您的代码Try/Catch是处理错误控制流的更好方法。但是实际上抛出一个异常相对来说是一个相当缓慢的过程,因为所有的工作都围绕着连接各地的数据库展开,如果这个循环可能抛出很多异常,那么将其速度减慢甚至更多可能不是一个好主意。此外,当使用它来跳过循环中的一个步骤时,有些人可能很难遵循逻辑。因此,这里可以接受类似@的内容;)

    你为什么不把它全部封装在一个
    try…catch
    块中?每个尝试过的try/catch处理?然后仔细阅读:@Joseph Silber我会投票支持try/catch作为答案。请将其作为与其他有效选项竞争的答案。为什么不将其全部封装在一个
    try…catch
    块中?每个尝试过的try/catch处理?然后仔细阅读:@Joseph Silber我将投票支持try/catch作为答案。请将其作为与其他有效选项竞争的答案。大多数情况下,所有连接都已建立。有时没有表,有时已经有列了。有时单元格不接受输入。大多数情况下,所有连接都已建立。有时没有表,有时已经有列了。有时单元格不接受输入。