我正在使用Medoo(使用PDO的PHP DB框架)并启用了PDO :: ERRMODE_EXCEPTION。我在try
和catch
块中有一些查询,如果其中任何一个查询返回空结果,我想抛出异常。
PS:$database->get()是一个返回单行的简单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"; }
...
是否有更通用的方法?
答案 0 :(得分:5)
您的逻辑错误,Exception
是在程序执行期间发生的事件,会中断正常流程。
返回空结果集的查询不会中断程序的正常流程,因为该查询已成功执行。
如果您认为使用异常以表示返回空结果是个好主意,则必须抛出该异常。
Eloquent,是Laravel使用的ORM,包含一个名为firstOrFail
和findOrFail
的方法,可以执行您所追求的内容。
您的选择是为Medoo
创建这样的方法,或者使用正确的ORM(如Doctrine或Eloquent)来帮助您实现开箱即用的此类行为。