我有代码
$email = "jb@tlb.com";
$row = mysql_query("SELECT EXISTS(SELECT email FROM accounts WHERE email='".$email."');");
echo $row[0];
然而,没有任何回应。
这很奇怪,因为正在返回一些东西,因为稍后在代码中我有一个CALLED函数:
if ( $row[0] == 0 ) { echo "Email address is available<br>";};
但是:这很奇怪,因为当我将SAME CODE放入mySQL数据库命令提示符时:
它显然返回1或TRUE。
当mysql命令提示符中的相同命令返回时,mysql_query返回0.此外:我无法回显结果以进行调试。
编辑:请不要,常规的mySQL命令返回此,只有这个:
编辑:这里有整个数据库:
答案 0 :(得分:3)
MySQL查询为您提供了一个资源。之后,你必须使用mysql_fetch_assoc或mysql_fetch_row或其他东西获取数据。但最好使用mysqli或PDO的预准备语句来获得更高的安全性。
$email = "jb@tlb.com";
$res = mysql_query("SELECT EXISTS(SELECT email FROM accounts WHERE email='".myql_real_escape_string($email)."')");
$row = mysql_fetch_assoc($res);
echo $row['email'];
回答你的问题:
$email = "jb@tlb.com";
$res = mysql_query("SELECT email FROM accounts WHERE email='".mysql_real_escape_string($email)."')");
$numRows = mysql_num_rows($res);
if($rowRows > 0) {
echo "Record Available";
}
答案 1 :(得分:0)
您需要从查询中实际检索结果集。 mysql_query()
只返回成功选择的资源句柄。然后,您需要使用mysql_fetch_*
类函数来获取结果。或者,您可以使用mysql_num_rows()
来确定结果集中返回的行数。
在这种情况下,将实际查询包装到子查询中实际上是毫无意义的。只需运行您的选择并确定行数:
$email = "jb@tlb.com";
$result = mysql_query("SELECT email FROM accounts WHERE email='".$email . "'");
if($result) {
$row_count = mysql_num_rows($result);
echo $row_count;
}
此外,您不应该使用mysql_*
函数编写新代码,因为这些函数已被弃用。我建议使用mysqli
或PDO
个扩展程序。
答案 2 :(得分:0)
您需要执行类似
的操作while ($r = mysql_fetch_assoc($row))
{
echo $r[0];
}
之后的代码。
让我知道。