我正在使用准备好的语句将表单中的值插入到 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