0

私はここで何か間違ったことをしていると思います。私はPHPに非常に慣れておらず、WWW呼び出しを介してデータベースとクライアントソフトウェアをインターフェイスするためにのみ使用しています。挿入スクリプトがありますが、これは機能しますが、更新スクリプトについてはim困惑しています...これが私が試したクエリです:

最新のもの:

$query = "UPDATE accounts SET moonscore= ' " . $moonscore . " ', sunscore = ' " . $sunscore . " ' WHERE name = ' " . $name . "';";

そして私も試してみましたが、しばらくすると間違っていると思いました。

$query = "UPDATE accounts SET moonscore = $moonscore, sunscore = $sunscore WHERE name =$name;

PHPの達人の皆さんの助けを本当に感謝します。

4

4 に答える 4

0

試す、

$query = "UPDATE accounts
          SET    moonscore = '$moonscore', 
                 sunscore = '$sunscore'
          WHERE  name ='$name'";

SQL Injection補足として、変数の値(s)が外部からのものである場合、クエリは脆弱です。それを防ぐ方法については、以下の記事をご覧ください。を使用PreparedStatementsすると、値を一重引用符で囲む必要がなくなります。

于 2013-02-08T00:23:39.770 に答える
0

変数を一重引用符で囲む必要があります。これを試してください

    $query = "UPDATE accounts SET moonscore = '$moonscore' , sunscore = '$sunscore' WHERE name ='$name';

ヒント: PDOorMYSQLIの代わりに使用してみてくださいmysql

于 2013-02-08T00:23:57.523 に答える
0

クエリは SQL インジェクションに対して開かれています。いつも役立つ簡単な機能を追加しました。

function inject($value)
{
    // Stripslashes
    if (get_magic_quotes_gpc()) {
        $value = stripslashes($value);
    }
    // Quote if not integer
    if (!is_numeric($value)) {
        $value = "'" . mysql_real_escape_string($value) . "'";
    }
    return $value;
}

$query = "UPDATE accounts SET moonscore = ".inject($moonscore).", sunscore = ".inject($sunscore)." WHERE name =".inject($name);
于 2013-02-08T00:26:37.277 に答える
0

プリペアド ステートメントを調べて、複雑な関数を使用してクエリをインジェクションから保護することを考える必要がないようにしてください。http://php.net/manual/en/pdo.prepared-statements.php

初心者向けのビデオをご覧ください: http://www.youtube.com/watch?v=_bw54BqS2UE

于 2013-02-08T00:37:26.973 に答える