4

関数内のmysqlDBを更新するためにphpを使用しています。変数名をエコーすることができ、phpページで変数を返すことができました。これは、私の変数が正しく機能していることを私に証明します。

これで、updateコマンドを使用しても、DBが応答しません。はい、DBに接続しましたが、すべて機能します。

これは私が更新するために使用しているものです:

mysql_query("UPDATE `table_name`
            SET `int_field` = '$int_value'
            WHERE `username` = $username");
4

5 に答える 5

3

の値$usernameはでラップする必要がありますsingle quotes

mysql_query(" UPDATE table_name 
                 SET int_field = '$int_value' 
               WHERE username = '$username'");

補足:コードは。で脆弱ですSQL Injection。コードを保護する方法については、以下の記事をお読みください。

PHPでSQLインジェクションを防ぐ最良の方法は?

于 2012-09-30T04:55:13.757 に答える
1

クエリへのすべての入力を引用する必要があります。これにより、SQLインジェクションが防止されますが、ユーザーがクエリを中断する特殊文字を無邪気に入力した場合に発生する単純な構文エラーも防止されます。

mysql_query('UPDATE table_name '.
            'SET int_field = "'.mysql_real_escape_string($int_value).'" '.
            'WHERE username = "'.mysql_real_escape_string($username).'"');
于 2012-09-30T05:27:13.387 に答える
1

これは、phpの変数で更新する方法の正しい構造です

mysql_query("UPDATE tablename SET password='". $NPass ."' WHERE custID='$num'");
于 2016-01-03T05:29:46.403 に答える
0

これを試して :

         mysql_query("UPDATE `table_name`
         SET `int_field` = '$int_value'
        WHERE `username` = '$username'");
于 2012-09-30T05:00:15.853 に答える
0

私は同じ問題を抱えていて、SET値は一重引用符を必要とせず、WHERE句は必要であることがわかりました...

mysql_query("UPDATE table_name SET int_field=$int_value
WHERE username='$username'");

..私のために働いているようでした。

于 2014-01-28T07:43:48.780 に答える