PHP PDO-使用准备好的语句会导致服务器错误
我有一个PHP网站,我花了一些时间使用XAMPP localhost环境开发。当我在本地测试它时,它工作得很好,但不幸的是,当我尝试在我租用的web服务器空间上运行它时,情况并非如此 当我上传完成的网站并尝试访问它时,我收到了“服务器错误500”的回复,经过几个小时的错误查找,我已经查明了错误的原因。事实证明,执行prepared语句会导致服务器错误,我不知道为什么。以下代码将导致服务器错误:PHP PDO-使用准备好的语句会导致服务器错误,php,mysql,pdo,Php,Mysql,Pdo,我有一个PHP网站,我花了一些时间使用XAMPP localhost环境开发。当我在本地测试它时,它工作得很好,但不幸的是,当我尝试在我租用的web服务器空间上运行它时,情况并非如此 当我上传完成的网站并尝试访问它时,我收到了“服务器错误500”的回复,经过几个小时的错误查找,我已经查明了错误的原因。事实证明,执行prepared语句会导致服务器错误,我不知道为什么。以下代码将导致服务器错误: try {$db = new PDO("mysql:host=hostname;dbname=dbna
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.
下面的代码执行相同的操作,但没有准备好的语句;它可以在web主机上正常工作:
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主机会给我服务器错误吗
编辑:
如果您更改为:
$temp->execute(array("theusername"));
这可能会解决问题。如@chris85所述,如果您改为:
$temp->execute(array("theusername"));
这可能会解决问题。-并检查日志。您还需要将可执行文件放入try/catch中。您的托管提供商是否安装了PDO模块?检查phpinfo()输出。是否运行PHP<5.4?如果没有错误,很难调试,但可能不支持速记数组表示法。@Fred-ii-。“我不认为你是对的,那样做很好。”我只是纠正了一些人。这毕竟是PHP版本。很高兴看到问题解决了。编辑:我删除了关于使用准备好的声明的评论。-并检查您的日志。您还需要将可执行文件放入try/catch中。您的托管提供商是否安装了PDO模块?检查phpinfo()输出。是否运行PHP<5.4?如果没有错误,很难调试,但可能不支持速记数组表示法。@Fred-ii-。“我不认为你是对的,那样做很好。”我只是纠正了一些人。这毕竟是PHP版本。很高兴看到问题解决了。编辑:我删除了关于使用准备好的语句的评论。简要说明:简短的数组语法,即
['something']
而不是array('something')
。对于PHP5.3及以下版本执行([“theusername”])代码>只是一个语法错误。简要说明:使用了短数组语法,即['something']
而不是数组('something')
。对于PHP5.3及以下版本执行([“theusername”])代码>只是一个语法错误。