Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP PDO未更新表且未产生错误_Php_Mysql_Pdo_Sql Update_Prepared Statement - Fatal编程技术网

PHP PDO未更新表且未产生错误

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->

我试图使用PDO准备的语句更新我的一个表中的单个元素,但由于某些原因,它不起作用。我正在使用try-and-catch,并且没有收到来自系统的错误。我还回显了我的两个绑定参数,它们都在系统中注册,所以我不知道为什么不能通过。我在另一个脚本中使用了一个非常类似的查询,一切都很好

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''附近使用的正确语法。您是个天才。我甚至没听清楚。谢谢!