0

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

# 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 中并手动将负值插入到prepare 插入正值的同一列中
UPDATE db.dbt SET opinion = '-1' WHERE key = '10101';:(实际SQL 中存在刻度线)
^ 这有效。
• 我在执行准备好的语句时打印了它们,我注意到这些值没有用引号括起来。我认为这就是问题的来源

我读到不应该在 中引用值prepare(),所以我想不出别的办法……</p>

编辑: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
4

1 回答 1

2

如果您使用的是 PDO:-

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

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

于 2011-11-28T18:08:47.880 回答