亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我的PDO聲明不起作用

我的PDO聲明不起作用

慕婉清6462132 2019-05-23 13:28:13
我的PDO聲明不起作用這是我的PHP sql語句,它在var轉儲時返回false$password_md5 = md5($_GET['password']);$sql = $dbh->prepare('INSERT INTO users(full_name, e_mail, username, password, password_plain) VALUES  (:fullname, :email, :username, :password, :password_plain)');$result = $sql->execute(array(                     ':fullname' => $_GET['fullname'],                      ':email' => $_GET['email'],                      ':username' => $_GET['username'],                     ':password' => $password_md5,                     ':password_plain' => $_GET['password']));
查看完整描述

1 回答

?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

如果PDO語句返回FALSE,則表示查詢失敗。您必須將PDO設置為正確的錯誤報告模式以了解錯誤。

連接后立即將此行放入代碼中

$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

收到錯誤消息后,您必須閱讀并理解它。這聽起來太明顯了,但學習者經常忽略錯誤信息的極端有用性。但大多數時候它解釋這個問題非常簡單。比如,如果它說特定表不存在,則必須檢查拼寫,拼寫錯誤,字母大小寫,憑證等?;蛘?,如果它說SQL語法中存在錯誤,那么您必須檢查SQL。問題點就在錯誤消息中引用的查詢部分之前。

您還必須信任該錯誤消息。如果它說令牌的數量與綁定變量的數量不匹配那么它就是這樣。缺席的表或列也是如此。鑒于選擇,無論是你自己的錯誤還是錯誤信息是錯誤的,總是堅持前者。它再次聽起來居高臨下,但在這個網站上的數百個問題證明這個建議非常有用。


請注意,為了查看PDO錯誤,您必須能夠查看PHP錯誤。為此,您必須配置PHP取決于站點環境:

  • 開發服務器上,在屏幕上出現錯誤非常方便,因為必須打開顯示錯誤:

    error_reporting(E_ALL);ini_set('display_errors',1);
  • 實際站點上,必須記錄所有錯誤,但從未向客戶端顯示。為此,請以這種方式配置PHP:

    error_reporting(E_ALL);ini_set('display_errors', 0);ini_set('log_errors', 1);

請注意,error_reporting應始終設置E_ALL。

另請注意,盡管存在常見的錯覺,但不必使用try-catch進行錯誤報告。PHP將以一種更好的形式向您報告PDO錯誤。未捕獲的異常非常適合開發,但是如果要顯示自定義錯誤頁面,仍然不要使用try catch,而只是設置自定義錯誤處理程序。簡而言之,您不必將PDO錯誤視為特殊內容,而是將其視為代碼中的任何其他錯誤。


查看完整回答
反對 回復 2019-05-23
  • 1 回答
  • 0 關注
  • 423 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號