2014-03-13 67 views
0

我新的PHP和MySQL,我想在一個數據庫中,已經工作得很好,直到我試圖使用PDO的準備方法插入數據。它返回捕獲錯誤,我不明白爲什麼 - 我也想知道是否最好的做法是使用未命名的佔位符或命名的佔位符?將數據插入MySQL數據庫使用PDO

用戶名和密碼變量在我的代碼和數據捕獲從較早使用$_POST用戶定義的。

編輯:的getMessage()錯誤顯示SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'username' cannot be null

if (!empty($user) && (!empty($password))) { 
    try { 
     $results = $db->prepare("INSERT INTO user_info (username, pass) VALUES (?,?)"); 
     $results->bindParam(1,$username); 
     $results->bindParam(2,$password); 
     $results->execute(); 
    } catch (Exception $e) { 
     echo "Could not insert data in to the database"; 
    } 
} 
+0

'回聲$ E->的getMessage();'看看是什麼錯誤。 – xdazz

+0

SQLSTATE [23000]:完整性約束衝突: –

+0

你引用'$ user'然後引用'$ username' 1048列 '用戶名' 不能爲空。這是什麼? – JBES

回答

0

你有兩個不同的變量名。你檢查$user,以確保它不是empty()但後來你告訴綁定$username第一個參數。你只需要重命名其中的一個來匹配其他的。

0

試試這一個。

if (!empty($user) && (!empty($password))) { 
try { 
    $results = $db->prepare("INSERT INTO user_info (username, pass) VALUES (?,?)"); 
    $results->bindParam(1,$user); 
    $results->bindParam(2,$password); 
    $results->execute(); 
} catch (Exception $e) { 
    echo "Could not insert data in to the database"; 
} 

}

請先嚐試自己查找錯誤。