PHP pdo: prepare()将负数变为正数


php pdo: prepare() negatives become positive

我正在使用一个准备好的语句将值从表单插入到数据库中,其中一些值是负的。

# html
<input type="radio" name="opinion" value='-2' />
<input type="radio" name="opinion" value='-1' />
<input type="radio" name="opinion" value='0' />
<input type="radio" name="opinion" value='1' />
<input type="radio" name="opinion" value='2' />
# prepare
prepare("UPDATE $db.$dbt SET $question = :value WHERE `key` = :key;");

已采取的故障排除步骤:
•我从表单中响应POST ed值,负号返回负值。
•我将prepare()中的语句复制到CLI中,并手动将负值插入到准备插入正值的同一列中:
UPDATE db.dbt SET opinion = '-1' WHERE key = '10101';(实际SQL中存在的标记)
^这是有效的。
•我在执行准备好的语句时打印了它们,我注意到值没有括在引号中。我想这就是问题的来源

我读到值不应该在prepare()中引用,所以我想不出还有什么可以做的…

EDIT: prepare()在循环内

foreach ( $pairs as $pair ) {
    list($question , $answer) = explode('=', $pair);
    try {
        $record_data = $dbh->prepare("UPDATE $db.$dbt SET $question = :value WHERE `key` = :key;");
        $record_data->bindParam(':value', $answer);
        $record_data->bindParam(':key', $key);
        $record_data->execute();
    } catch(PDOException $e){};
} // end foreach

如果使用PDO:-

$sth->bindParam(':value', $opinion, PDO::PARAM_INT);

bindParam的默认数据类型是PDO::PARAM_STR