这是我的表
Field Type Null Key Default Extra
id_key int(11) NO PRI NULL auto_increment
tbl_users_username varchar(255) YES UNI NULL
tbl_users_password varchar(32) YES NULL
tbl_users_identifier varchar(32) YES NULL
tbl_users_token varchar(32) YES NULL
tbl_users_access_type int(1) YES NULL
tbl_users_timeout int(10) YES NULL
这是我的代码
$query = "SELECT * FROM tbl_users where tbl_users_username = '$_POST[email_address]'" ;
$result = mysql_query($query);
if($result)
{
echo "TRUE";
}
else
{
echo "FALSE";
}
连接数据库没有问题。运行查询时出现问题。无论电子邮件是否在表中,它都会返回$ result。我在这里错过了什么?如果表中存在电子邮件地址,则应该返回true,如果表中没有电子邮件地址,则返回false。
答案 0 :(得分:1)
$_POST[email_address]
我应该使用单引号或双引号:
$_POST["email_address"]
或$_POST['email_address']
$query = "SELECT * FROM tbl_users where tbl_users_username = '" . $_POST['email_address'] . "'" ;
然而,正如@FabioCosta所说,你必须获取结果或计算返回的行数以实现你的目标:
$query = "SELECT 1 FROM tbl_users where tbl_users_username = '" . $_POST['email_address'] . "'";
$result = mysql_query($query);
if(mysql_num_rows($result) === 1) {
echo "TRUE";
} else {
echo "FALSE";
}
答案 1 :(得分:1)
然后将返回结果(如果您进行了有效查询)使用mysql_num_rows来检查邮件是否存在。 如果可以的话,实际上使用PDO
答案 2 :(得分:1)
如果您使用PHP的mysql_num_rows
函数,您应该能够返回行数,并且您的逻辑将起作用。所以,请尝试以下方法:
$num = mysql_num_rows($result);
if ($num > 0) {
echo "TRUE";
}else{
echo "FALSE";
}
答案 3 :(得分:1)
我建议您打印出自己的查询,以确定它是您期望的查询的100%。
除此之外,您正在检查:
$result = mysql_query($query);
if($result)
这将检查您的查询是否返回了资源。您的查询有效,然后根据documentation,您应始终拥有资源。
建议代码:
$result = mysql_query($query);
if($result)
{
$num = mysql_num_rows($result);
if ($num > 0)
{
//do logic processing here...
echo "TRUE";
}
}
else
{
die('Invalid query: ' . mysql_error());
}
if($result)
{
$num = mysql_num_rows($result);
if ($num > 0)
{
//do logic processing here...
echo "TRUE";
}
}
else
{
die('Invalid query: ' . mysql_error());
}
代码说明:
我会强烈建议您考虑使用PDO库。
简要介绍PDO的优点:
允许您轻松使用预准备语句(准备好的声明非常适合安全性!)
PDO可以连接到各种不同的数据库,包括MySQL,还有其他数据库。
堆栈溢出使用提示:
答案 4 :(得分:0)
以下查询将根据发布的email_address'值中的值选择tbl_users_username值。因此,请使用此查询:
$query =
"SELECT * FROM tbl_users where tbl_users_username = '".$_POST['email_address']."';";
答案 5 :(得分:0)
$query = "SELECT *
FROM tbl_users
WHERE tbl_users_username = '" . mysql_real_escape_string($_POST['email_address']) . "'";
$result = mysql_query($query) or die(mysql_error());
if($result)
{
echo "TRUE";
}
else
{
echo "FALSE";
}
这应该可以解决您遇到的任何问题,或至少为您提供方便的错误消息。