0

私はこのクエリを持っています:

mysql_query("INSERT INTO `63_Activity` (`username`, `time`) VALUES (`$usernann2`, `$date`)");

ただし、何もしません。変数を修正しようとしても

". $variable ." 

変数を確認しました。

動作する場所からコードの小さな行をコピーしました。

データベースとテーブルは存在します。

私は自分が物事をコントロールしていると思ったのですが、それが起こりました-.-

前もって感謝します。

PS:addまたはdie()を試しましたが、エラーはありません。何もない。

4

3 に答える 3

1

値は'、バッククォート( `)ではなく、一重引用符()である必要があります

mysql_query("INSERT INTO `63_Activity` (`username`, `time`) VALUES ('$usernann2', '$date')");

また、入力をサニタイズしていることを確認する必要があります。また、できればmysql_、代わりに関数を使用しないでください。mysqli_

于 2012-07-29T21:00:25.257 に答える
0

クエリを変数に入れてエコーし、何か問題がないかどうかを確認し、phpmyadminでも実行してみてください

于 2012-07-29T21:02:54.013 に答える
0

次の例のように、パラメータ化されたクエリを使用することをお勧めします。

 <?php

try {
    $usernann2 = "whateverUsernameFits";
    $date = new DateTime('2000-01-01');
    $stmt = $this->db->prepare ( "INSERT INTO 63_Activity (username, time) VALUES (:usernann2, :date)");
    $stmt->bindParam ( ':usernann2', $usernann2 );
    $stmt->bindParam ( ':date', $date );        
    $stmt->execute ();
}catch ( PDOException $e ) 
        {
            throw new Exception ( $this->db->errorInfo () . 'Problem inserting object ' );
        } catch ( Exception $e ) {
            throw new \Exception ( 'Problem inserting object ' );
        }

        ?>

バインドされたパラメーターは、SQLインジェクション攻撃を防ぐための主要な要素です。スローされた例外は、クエリに問題がある場合に何が問題になる可能性があるかについての手がかりを与えます。私は通常、最初にクエリをチェックして、実際の値で機能していることを確認します。そこからそれは排除のプロセスです。

PS。SQLインジェクションの詳細については、https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheetを参照してください。また、SQLインジェクションに関するStackoverflowに関するいくつかの優れた情報と質問を見つけることができるはずです。

于 2012-07-29T21:33:44.190 に答える