Я использую подготовленный оператор для вставки значений из формы в БД, и некоторые значения являются отрицательными.
# 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()
, поэтому я не могу думать ни о чем другом ...
РЕДАКТИРОВАТЬ: 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