-2

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

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

ERRNO:42000 ERROR: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";
        }
    }
}

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

4

1 回答 1

0

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

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

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

`

于 2013-09-03T08:36:44.390 回答