PDO MySQL错误-SQLSTATE[42000]:通过对表的UPDATE(ING)整数


PDO MySQL Error - SQLSTATE [42000]: by UPDATE(ING) integer to table

我可以使用PDO将文本字符串(varchar)类型更新到Mysql数据库,而不会出现任何问题。但是对于integer(int(11))类型,我的PDOstatement存在一些大问题,并且不能将整数值写入数据库。

在这里,您可以看到我通过为UPDATE设置整数值得到的错误消息:

ERRNO:42000错误:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;查看与MySQL服务器版本相对应的手册,了解在第1行的"age='800'WHERE id='1'"附近使用的正确语法

我从$_POST中得到的值如下:

foreach ($_POST['changed'] as $SubArray) {
    foreach ($SubArray as $key => $value) {
        if ($key === 'recid') continue;

        $sql  = "UPDATE clients SET $key = :value WHERE id = :recid";
        $STH = $DBH->prepare($sql);
        try {
            $STH->execute(array(':value' => $value, ':recid' => $SubArray['recid']));
        } catch (PDOException $e) {
            $code = $e->getCode();
            $file = $e->getFile();
            $line = $e->getLine();
            $msg  = $e->getMessage();
            echo "$file:$line ERRNO:$code ERROR:$msg";
        }
    }
}

echo-urlencode($sql)=>UPDATE+clients+SET+age+%3D+%3Avalue+WHERE+id+%3D+%3Arecid

像这样设置查询($sql)就可以了。

$sql = "UPDATE `clients` SET `$key` = :value WHERE id = :recid";

表和列名前后使用回溯

`