0

「answers」という名前のデータベーステーブルの値の更新に関して問題が発生しました。テーブルが更新されていないためです。だから、ここに私のコードがあります:

 if(isset($_POST['marked']))
            { $marked= $_POST['marked'];
            $command= "UPDATE Answers SET " .
          "SessionID=" . $_POST['SessionID'] . ", " .
          "TestID=" . $_POST['TestID'] . ", " .
          "QuesID=" . $_POST['QuesID'] . ", " .
          "A1=0, " .
          "A2=0, " .
          "A3=0, " .
          "A4=0, " .
          "A5=0, " .
          "A6=0, " .
          "AnswerText=\"\", " .
          "SortOrder='" . intval($_POST['Order']) . "' " .
          "marked=1".
          "WHERE SessionID=" . $_POST['SessionID'] .
          " AND QuesID=" . $_POST['QuesID'];
             $lolsql= mysql_query($command, $conn);


             }

誰かがマークされた(送信ボタン)をクリックするたびに、0の値を持つ「マークされた」フィールドを1に更新したいと思います。誰かが私を助けてください。前もって感謝します:)

4

2 に答える 2

1

入力をサニタイズしてデータベースを直接更新していないため、コードはインジェクション攻撃に対して非常にmysqli_()脆弱PDO statementsですmysql_()

mysqli_real_escape_string()入力をサニタイズするために少なくとも使用する

if(isset($_POST['whatever'])) {
  $holder = mysqli_real_escape_string ($connection, $_POST['value']);
}

そして、あなたのクエリは完全に混乱しています。なぜ連結を使用しているのですか? このようにクエリを単純に書くことはできませんか?

$query = "UPDATE table_name SET col_name = '$value', col_name2 = '$value2' ... WHERE ...";
于 2012-11-03T12:55:41.563 に答える
1

完全なコード:

<? if(isset($_POST['marked'])) {

    $answer_text = "something here";

    $marked = mysql_real_escape_string($_POST['marked']);
    $session = mysql_real_escape_string($_POST['SessionID']);
    $test = mysql_real_escape_string($_POST['TestID']);
    $ques = mysql_real_escape_string($_POST['QuesID']);
    $answer = mysql_real_escape_string($answer_text);
    $order = intval(mysql_real_escape_string($_POST['Order']));

    mysql_query("
    UPDATE
        `Answers`

    SET
        `SessionID` = '$session',
        `TestID` = '$test',
        `QuesID` = '$que',
        `A1` = 0,
        `A2` = 0,
        `A3` = 0,
        `A4` = 0,
        `A5` = 0,
        `A6` = 0,
        `AnswerText` = '$answer',
        `SortOrder` = '$order',
        `marked` = 1

    WHERE
        `SessionID` = '$session'
        AND
            `QuesID` = '$ques';
    ") or die("Error: " . mysql_error());

}?>

クエリを 1 行にまとめたい場合は、次のようにします。

mysql_query("UPDATE `Answers` SET `SessionID` = '$session', `TestID` = '$test', `QuesID` = '$que', `A1` = 0, `A2` = 0, `A3` = 0, `A4` = 0, `A5` = 0, `A6` = 0, `AnswerText` = '$answer', `SortOrder` = '$order', `marked` = 1 WHERE `SessionID` = '$session' AND `QuesID` = '$ques';") or die("Error: " . mysql_error());

それでも問題が解決しない場合、このスクリプトは で始まるエラーを返しますError:。いずれかの列のスペルが間違っている可能性があります。

于 2012-11-03T13:30:23.807 に答える