Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果这些查询中的任何一个返回空结果,则为PDO-Catch_Php_Mysql_Pdo - Fatal编程技术网

Php 如果这些查询中的任何一个返回空结果,则为PDO-Catch

Php 如果这些查询中的任何一个返回空结果,则为PDO-Catch,php,mysql,pdo,Php,Mysql,Pdo,我正在使用(一个使用PDO的PHPDB框架)并启用PDO::ERRMODE_异常。我在try和catch块中有一些查询,如果其中任何查询返回空结果,我想抛出一个异常 PS:是一个简单的PDOSELECT返回一行。我认为这不相关,我认为我的示例也适用于没有框架的PDO try { $q1 = $database->get(..); $q2 = $database->get(..); $q3 = $database->get(..); $q4 = $

我正在使用(一个使用PDO的PHPDB框架)并启用PDO::ERRMODE_异常。我在
try
catch
块中有一些查询,如果其中任何查询返回空结果,我想抛出一个异常

PS:是一个简单的PDO
SELECT
返回一行。我认为这不相关,我认为我的示例也适用于没有框架的PDO

try {
    $q1 = $database->get(..);
    $q2 = $database->get(..);
    $q3 = $database->get(..);
    $q4 = $database->get(..);
} catch (PDOException $e) {
    die ("There was an error in a query.");
}
现在,只有当查询中出现错误时,我才会进入
catch
块,就像我试图选择一个不存在的表一样。我想找到一种最佳方法来避免检查是否每个查询都没有手动返回空结果,就像我不想这样做一样:

if (!$q1) { echo "No result"; }
if (!$q2) { echo "No result"; }
...

有更通用的方法吗?

您的逻辑是错误的,
异常是在程序执行期间发生的一个事件,它会中断正常流程

返回空结果集的查询是而不是中断了程序的正常流程,因为该查询已成功执行

如果您认为使用异常来发出返回空结果的信号是一个好主意,那么您必须抛出该异常

,这是Laravel使用的ORM,它包含一个名为
firstOrFail
findOrFail
的方法,用于执行您所需的操作


您可以选择为
Medoo
创建这样一种方法,或者使用适当的ORM(如条令或雄辩)来帮助您实现这种开箱即用的行为。

您的逻辑是错误的,
异常是指在程序执行期间发生的事件,它会中断正常流程

返回空结果集的查询是而不是中断了程序的正常流程,因为该查询已成功执行

如果您认为使用异常来发出返回空结果的信号是一个好主意,那么您必须抛出该异常

,这是Laravel使用的ORM,它包含一个名为
firstOrFail
findOrFail
的方法,用于执行您所需的操作


您可以选择为
Medoo
创建这样一个方法,或者使用适当的ORM(例如条令或雄辩)来帮助您实现这种开箱即用的行为。

如果您想捕获异常,您必须首先抛出它。这不就是为什么我要为每个查询手动执行此操作吗?您还有其他想法吗?您有一个自定义条件,希望为其引发异常。要么这样做,要么在get()的基础上创建另一个getOrFail()方法来为您执行此操作。它需要扩展为可用,因此不能称之为可用的最小框架。尤其是作为一个简单的查询生成器。此外,我看不出PDO抛出异常的原因何在。@YourCommonSense这太可怕了,就是这个词,你太有礼貌了,不能按它的本来面目来称呼它。这是另一种“让我们扩展PDO并创建更好的东西,但失败了,因为它会吸取更多”类型的类,由于某种原因变得很流行。如果你想捕获异常,你必须先抛出它。这不是导致我对每个查询都手动执行吗?你有其他想法吗?您有一个自定义条件,希望为其引发异常。要么这样做,要么在get()的基础上创建另一个getOrFail()方法来为您执行此操作。它需要扩展为可用,因此不能称之为可用的最小框架。尤其是作为一个简单的查询生成器。此外,我看不出PDO抛出异常的原因何在。@YourCommonSense这太可怕了,就是这个词,你太有礼貌了,不能按它的本来面目来称呼它。这是另一个“让我们扩展PDO并创建更好的东西,但失败了,因为它会吸更多”类型的类,出于某种原因变得流行。。