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;");

すでに実行されたトラブルシューティング手順
•フォームからed値をエコーし​​、POSTネガティブはネガティブを返します。
•のステートメントをCLIにコピーし、prepare()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 に答える