-1

データベースに保存されている電子メールアドレスを入力に入力されたものと比較しようとしていますが、認識されません:

私は自分のデータベースから列を選択しようとしています:

$query = mysql_query("SELECT * FROM `men` WHERE `Email`=$user_email");

ただし、メールがまったく同じであっても、クエリは 0 を返します。ここでの問題は何ですか

4

1 に答える 1

2

多くの問題があります。Email = email@example.comこのクエリは、MySQL の構文エラーである whichを補間します。

  • mysql_query次のようなものでエラーをチェックする必要がありますmysql_query($query) or echo mysql_error()
  • $user_emailに補間されるように引用符で囲む必要がありEmail = 'email@example.com'ます。これは、有効な/望ましいクエリです。
  • まったく使用ext/mysqlしないでください。それは非推奨です。大きなピンクのボックスを参照してください。
  • クエリが適切にパラメータ化されていないため、コードはインジェクションに対して脆弱です。

はるかに優れた代替手段は(PDOで)次のようになります。

$query = $pdo->prepare("SELECT * FROM `men` WHERE `Email` = ?");
$query->execute(array($user_email));
$result = $query->fetch();

エラー チェックとパラメーター化に関する私のコメントは、PDO にも適用されることに注意してください。

于 2013-04-02T21:16:57.417 に答える