这是我的表格:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form action="register_ajax.php" method="get">
<input type="text" name="email">
<input type="submit" value="test">
</form>
</body>
</html>这是我的php代码:
<?php
$dbc = mysqli_connect("localhost","root","*******","continental_tourism") OR die(mysqli_connect_error());
$email = $_GET['email'];
$query = "SELECT email FROM customer_info WHERE email = '$email' ";
$r = mysqli_query($dbc, $query) OR die(mysqli_error($dbc));
if($r)
echo "Email address exists!";
else
echo "sss";
?>如果我输入了正确的(数据库中现有的电子邮件) $r是真的。但是如果我输入了不存在的电子邮件,那么$r也是真的。为什么会这样呢?基本上,我想检测空集。我该怎么做呢?
谢谢!
发布于 2012-04-17 23:45:18
只有当存在SQL错误时,$r才会为false。否则,它将始终返回一个对象,即使SELECT语句没有返回任何行。
使用mysqli_num_rows()计算返回的行数。零表示没有人在使用该电子邮件地址。
if(mysqli_num_rows($r))
echo "Email address exists!";
else
echo "sss"; 发布于 2012-04-17 23:47:17
如果查询成功,mysqli_query()将始终返回MySQLi结果资源。当作为布尔值进行测试时,资源的计算结果始终为TRUE。
成功的查询不一定是返回结果的查询,它只是一个没有失败的查询。如果出现错误,例如语法错误或MySQL服务器中的处理错误,则认为查询已失败-在这种情况下,查询将返回FALSE。但是一个没有找到结果的查询仍然是一个成功的查询。
您需要使用mysqli_num_rows()来确定查询是否找到任何结果:
<?php
$dbc = mysqli_connect("localhost","root","longhorn","continental_tourism") OR die(mysqli_connect_error());
$email = $_GET['email'];
$query = "SELECT email FROM customer_info WHERE email = '$email' ";
$r = mysqli_query($dbc, $query) OR die(mysqli_error($dbc));
if(mysqli_num_rows($r) > 0)
echo "Email address exists!";
else
echo "sss";
?>发布于 2012-04-17 23:48:55
如果成功,mysqli_query将返回一个result对象,如果失败,将返回false。未选择任何行不会被视为失败。您可以使用mysqli_num_rows检查返回的行数。
https://stackoverflow.com/questions/10194442
复制相似问题