PHP PDO未更新表且未产生错误
我试图使用PDO准备的语句更新我的一个表中的单个元素,但由于某些原因,它不起作用。我正在使用try-and-catch,并且没有收到来自系统的错误。我还回显了我的两个绑定参数,它们都在系统中注册,所以我不知道为什么不能通过。我在另一个脚本中使用了一个非常类似的查询,一切都很好PHP PDO未更新表且未产生错误,php,mysql,pdo,sql-update,prepared-statement,Php,Mysql,Pdo,Sql Update,Prepared Statement,我试图使用PDO准备的语句更新我的一个表中的单个元素,但由于某些原因,它不起作用。我正在使用try-and-catch,并且没有收到来自系统的错误。我还回显了我的两个绑定参数,它们都在系统中注册,所以我不知道为什么不能通过。我在另一个脚本中使用了一个非常类似的查询,一切都很好 if($_POST['check_request'] == "Yes"){ $check_amnt = $_POST['check_amnt']; try { $STH = $DBH->
if($_POST['check_request'] == "Yes"){
$check_amnt = $_POST['check_amnt'];
try {
$STH = $DBH->prepare('UPDATE accounts SET check = :check_amnt WHERE accnt = :user');
$STH->bindParam(':check_amnt', $check_amnt);
$STH->bindParam(':user', $ulog);
$STH->execute();
}
catch(PDOException $e) {
echo "Check Input Error: " .$e->getMessage(). "</br>";
}
}
if($\u POST['check\u request']==“Yes”){
$check\u amnt=$\u POST['check\u amnt'];
试一试{
$STH=$DBH->prepare('updateaccountsetcheck=:check\u amnt其中accnt=:user');
$STH->bindParam(':check\u amnt',$check\u amnt);
$STH->bindParam(':user',$ulog);
$STH->execute();
}
渔获量{
echo“检查输入错误:”..e->getMessage()。“”;
}
}
您是否使用以下设置了PDO的异常模式:
$DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
更新:
检查
是否为mysql保留字,需要对其进行转义
$STH = $DBH->prepare('UPDATE accounts SET `check` = :check_amnt WHERE accnt = :user');
这段代码的PDO部分看起来不错。检查变量是否设置正确,例如$\u POST['Check\u request']
,$Check\u amnt
和$ulog
。每个变量都已检查,并且都在系统中注册。然后执行死亡('Hello!')在$STH->execute()。这就是我遇到的错误,但我不确定它为什么会出错:“SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解在“check='40'附近使用的正确语法,其中accnt='admin''位于第1行”echo
SQL查询本身(prepare语句中的一个)并尝试使用另一个工具(phpmyadmin、sqlyog、mysql命令行或类似的工具)手动执行此操作。这很完美。我现在收到错误。这是我收到的错误,但我不确定语法为何错误。有什么建议吗?错误:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以了解在第1行的“check='40',accnt='admin''附近使用的正确语法。您是个天才。我甚至没听清楚。谢谢!