PHP PDO - 使用预准备语句会导致服务器错误

时间:2016-02-17 14:30:59

标签: php mysql pdo

我有一个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

1 个答案:

答案 0 :(得分:4)

正如@ chris85所提到的,如果你改为:

$temp->execute(array("theusername"));

这可以解决问题。