2013-12-23 123 views
0

我使用這個結構檢查,爲什麼不執行的語句錯誤:檢查語句錯誤PDO

$value1 = $username; 
$value2 = $firstname; 
$value3 = $lastname; 

$sql = "INSERT INTO table (row1, row2, row3) VALUES (?, ? , ?)"; 

try { 
    $stmt = $dbh->prepare($sql); 

    $stmt->bindParam(1, $value1); 
    $stmt->bindParam(2, $value2); 
    $stmt->bindParam(3, $value3); 

    $stmt->execute(); 
} catch(PDOException $e) { 
    $var .= $e->getMessage(); 
} 

include 'log.php'; 

log.php:

$logfile = fopen("logfile.txt", "a"); 
$error = date("d.m.Y H:i:s")." - ".$var.".\r\n"; 
fwrite($logfile, $error); 
fclose($logfile); 

有我的數據庫中,並沒有插入我的log.php也是空的,所以我不能保存錯誤,任何人都可以幫助我?問候

+0

你能顯示你的$ sql嗎? – raygo

+0

pdo構造器在哪裏? – Ricbermo

+0

你能發佈整個代碼嗎?那裏$ sql,$ value1,$ value2和$ value3被定義 –

回答

-1

我不知道爲什麼PDO錯誤吸引了PHP用戶的如此不同的關注。你永遠不會看到一個包含或圖像處理如此之多的調整。但由於某種原因,PDO聲明總是得到特殊待遇。

雖然PDO錯誤絕對沒有特別之處。這與其他任何錯誤完全相同,不需要以任何特殊方式處理PDO錯誤。如果找不到文件 - PHP將記錄該錯誤。如果PDO查詢失敗 - PHP也會記錄該錯誤。只要告訴PHP這樣做。

ini_set('log_errors', 1); 

是您所需要的。然後運行你的代碼並記錄錯誤

$sql = "INSERT INTO table (row1, row2, row3) VALUES (?, ? , ?)"; 
$stmt = $dbh->prepare($sql); 
$stmt->execute(array($username, $firstname, $lastname));