我有一個PHP網站,我花了一些時間開發使用XAMPP本地主機環境。當我在本地測試它時效果很好,但不幸的是,當我嘗試在我租用的Web服務器空間上運行它時,這種情況並不能說明問題。PHP PDO - 使用準備好的語句導致服務器錯誤
當我上載我完成的網站,並試圖訪問它,我與「服務器錯誤500」迎接和錯誤狩獵無奈的幾個小時後,我已經查明是什麼原因造成的錯誤。事實證明,執行準備好的語句導致服務器錯誤,我不知道爲什麼。下面的代碼將導致服務器錯誤:
try {$db = new PDO("mysql:host=hostname;dbname=dbname", "username", "password");}
catch(PDOException $e) {echo $e->getMessage();}
$temp = $db->prepare("SELECT * FROM users WHERE username=?");
$temp->execute(["theusername"]); //It's this line that causes the error.
下面的代碼做同樣的事情,但沒有一份準備好的聲明;它的工作原理沒有與虛擬主機的任何問題:
try {$db = new PDO("mysql:host=hostname;dbname=dbname", "username", "password");}
catch(PDOException $e) {echo $e->getMessage();}
$temp = $db->query("SELECT * FROM users WHERE username='username'");
當XAMPP本地運行他們都很好地工作。任何人有任何想法,如果我嘗試使用準備好的語句,爲什麼Web主機給我服務器錯誤?
編輯:
我的XAMPP安裝運行PHP 5.6.11和我的虛擬主機上運行29年3月5日
http://php.net/manual/en/pdo.error-handling.php - http://php.net/manual/en/function.error-reporting.php,並檢查你的日誌。您還需要將您的可執行文件放入try/catch中。 –
您的託管服務提供商是否安裝了PDO模塊?檢查phpinfo()輸出。 – Oldskool
您正在運行PHP <5.4嗎?很難在沒有錯誤的情況下進行調試,但可能不支持速記數組表示法。 – chris85