簡體   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