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

时间:2013-09-03 07:38:19

标签: mysql pdo php

我可以使用PDO将文本字符串(varchar)类型更新到我的Mysql数据库,没有任何问题。但是使用整数(int(11))类型 - 我的PDO语句有一些大问题,也无法将整数值写入数据库。

在这里,您可以通过为UPDATE设置整数值来查看错误消息:

  

ERRNO:42000错误:SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;查看与您的MySQL服务器版本对应的手册,以便在'age ='800'WHERE id ='1''第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

1 个答案:

答案 0 :(得分:0)

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

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

表格和列名称之前和之后使用反引号

  

`