我正在创建很大的导入脚本。我想查看任何有问题的(未执行的)SQL查询。我在使用try-catch PHP块捕获错误的SQL查询时遇到问题。
我有一个查询:
SELECT id FROM tag WHERE name IN ()
当然其中有一个错误,所以我想使用以下代码打印类似的查询:
$sql = "SELECT id FROM tag WHERE name ".$tagsSql."";
try
{
$query = mysqli_query($this->mysqli, $sql);
$result = $query->fetch_assoc();
}
catch(Exception $e)
{
echo 'Problem with: '.$sql;
print_r($e); die;
}
当运行脚本时,PHP只会向我抛出此信息:
Fatal error: Call to a member function fetch_assoc() on a non-object in C:\www\blackboard-import\index.php on line 227
为什么未捕获此错误?因为致命吗?我该如何处理这种情况?我使用mysqli与MySQL联系。
这不是常规异常,而是致命错误(导致PHP关闭)。mysqli_query()
将在错误时返回false,这就是为什么您当前的脚本失败的原因,因此解决方案可能如下所示
try {
$query = $this->msqli->query($sql);
if ($query === FALSE) {
throw new Exception($this->mysqli->error);
}
$result = $query->fetch_assoc();
} catch(Exception $e) {
//...
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句