我有一个PHP网站,我花了一些时间使用XAMPP localhost环境进行开发。当我在本地测试它时,它工作得很好,但不幸的是,当我尝试在我租用的Web服务器空间上运行它时,它是不可能的。
当我上传完成的网站并尝试访问它时,我遇到了“服务器错误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,我的Web主机运行5.3.29
答案 0 :(得分:4)
正如@ chris85所提到的,如果你改为:
$temp->execute(array("theusername"));
这可以解决问题。