Я использую подготовленный оператор для вставки значений из формы в базу данных, и некоторые значения отрицательны.
# 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()
, поэтому я не могу придумать, что еще можно сделать…
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