0

コードは次のとおりです。

$id = intval($_POST['id']);
$score = "'" . $_POST['score'] . "'";
$shares = "'" . $_POST['shares'] . "'";

$conn = new PDO('mysql:host=localhost;dbname=news', 'root', '');
$stmt = $conn->prepare("UPDATE news SET 'shares' = :shares, 'score' = :score 
WHERE id = :id");
$stmt -> execute(array(
    'shares' => $shares,
    'score' => $score,
    'id' => $id
    ));

そして、それは機能しません。mysql がどこかで発生していると思われるエラーがどのように表示されるかはわかりませんが、考えられることはすべて試しました。

二重引用符を使用して、変数をステートメントにすぐに追加します。

共有とスコアに一重引用符を追加します。

これをどのように行うべきですか?

4

2 に答える 2

1

以下の例のように、列名から引用符を削除する必要があると思います。

$stmt = $conn->prepare("UPDATE news SET shares = :shares, score = :score 
                                                                  WHERE id = :id");

メソッドを使用bindParamしてパラメーターをバインドすることもお勧めします。

$stmt ->bindParam(':shares', $shares, PDO::PARAM_INT);
$stmt ->bindParam(':score', $score, PDO::PARAM_INT);
$stmt ->bindParam(':id', $id, PDO::PARAM_INT);
$stmt -> execute();

すべてのフィールドが INT 型であると想定しています。そうでない場合は、適切なタイプで更新してください。

于 2012-10-30T04:58:12.543 に答える
1

実行ステートメントのコロンを忘れていると思います。ここに編集されたコードがあります。

$stmt = $conn->prepare("UPDATE news SET shares = :shares, score = :score 
WHERE id = :id");
$stmt -> execute(array(
    ':shares' => $shares,
    ':score' => $score,
    ':id' => $id
    ));
于 2012-10-30T05:13:50.857 に答える