繁体   English   中英

PHP登录到error_log上的特定错误

[英]PHP Log to error_log on specific error

我有一个类似PHP的查询:

$result = $db->prepare("SELECT * FROM table WHERE page_url_match = :pageurlmatch AND datetime(post_time) > datetime('now', '-32 hours')"); # line 124
$result->bindValue(':pageurlmatch', $shorturl, SQLITE3_TEXT); # line 130

我不断收到错误消息:

[10-Dec-2015 12:20:09 America / New_York] PHP警告:SQLite3 :: prepare():无法准备语句:1,靠近“ now”:第124行中XXX中的语法错误

[2015年12月10日12:20:09 America / New_York] PHP致命错误:在第130行的XXX中的非对象上调用成员函数bindValue()

如果此错误再次出现,如何使PHP将特定变量记录到error_log文件中。 我知道我可以使用error_log($var); 但我不知道如何触发此操作仅在出现错误时才执行

首先假设数据库调用将始终成功,然后开始。 在这种情况下,您会遇到SQL语法错误,这意味着prepare调用返回的布尔值为false。 然后,您将布尔布尔值false当作语句句柄使用,并引起更多问题。

与外部资源打交道时,永远不要假设成功。 防御性地写作:假设失败,测试失败,并将成功视为惊喜。

猜测这是您正在使用的PDO,因此要么开始测试布尔假返回值,要么打开异常并开始尝试/捕获所有内容。

$stmt = $db->prepare(...);
if ($stmt === false) {
   error_log('prepare failed for reason: ' . $db->errorInfo);
   die();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM