-1

我正在尝试将存储在数据库中的电子邮件地址与输入中输入的电子邮件地址进行比较,但它无法识别:

我正在尝试从我的数据库中选择一个列:

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

但是,即使电子邮件完全相同,查询也会返回 0。这里有什么问题

4

1 回答 1

2

有很多问题。此查询将插入Email = email@example.comMySQL 中的语法错误。

  • 你应该在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 回答