这是我的表格:
<!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>
Run Code Online (Sandbox Code Playgroud)
这是我的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";
?>
Run Code Online (Sandbox Code Playgroud)
如果我输入正确的(db上的现有电子邮件)$r是真的.但如果我输入不存在的电子邮件,那也是$r如此.这是为什么?基本上我想检测空集.我该怎么做?
谢谢!
Joh*_*nde 12
$r只有在出现SQL错误时才会返回false.否则,即使SELECT语句没有返回任何行,它也将始终返回资源ID.
使用mysqli_num_rows()计算有多少行返回.零表示没有人使用该电子邮件地址.
if(mysqli_num_rows($r))
echo "Email address exists!";
else
echo "sss";
Run Code Online (Sandbox Code Playgroud)
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";
?>
Run Code Online (Sandbox Code Playgroud)