2

私は初心者で、これが私の最初の投稿です。いつの日か、私のような初心者を助けることができるようになることを願っています. それまでの間、私はあなたの返事に前もって感謝します。

以下のスクリプトは、MySQL データベースでユーザー名とパスワードが一致するかどうかを確認するための最速かつ最も効率的な方法ですか?

それが実際に最も効率的である場合、それに相当するものは次のとおりです。

1 - (プロシージャル スタイル) を使用して MySQLi を使用する。

2 - (オブジェクト指向スタイル) を使用して MySQLi を使用する。

3 – プリペアド ステートメントでの MySQLi の使用 - オブジェクト指向スタイル。

4 – 準備済みステートメントでの PDO の使用 - オブジェクト指向スタイル。

$connection = mysql_connect('localhost','root','pass') or die(mysql_error());
$database = mysql_select_db("database_name",$connection);

$sql = "SELECT count(*) FROM members WHERE username = '$username' AND 
password ='$password' LIMIT 1";

$result = mysql_query($sql) or die(mysql_error());

if (mysql_result($result, 0) > 0){

    echo 'found User <br />';
}

if (mysql_result($result, 0) < 1){

    echo 'username or password does not exist';
}
4

2 に答える 2

1

      PDO または mysqli を使用することをお勧めします。また、「$sql」変数には注意が必要です。インジェクションに対して非常に脆弱です。誰かがこれを入力した場合を想像してみてください。パスワード フィールドに " ' または 1 = '1 " (二重引用符なし)。

      SQL インジェクションの防止については、この投稿を確認できます: PHP で SQL インジェクションを防止するには? . また、mysql_* メソッドが非推奨になった理由については、この別の投稿を確認してください: Why should I use mysql_* functions in PHP?


PDO と mysqli のマニュアルを確認することもできます。


個人的      には PDO の方が好きで、コミュニティ サポートも充実していると思います

于 2013-06-01T00:59:24.373 に答える