这是我的表格:
<!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";
?>
如果我输入正确的(db上的现有电子邮件)$r
为真。但是,如果我输入不存在的电子邮件,那么$r
也是如此。这是为什么?基本上我想检测空集。我该怎么办?
谢谢!
答案 0 :(得分:12)
$r
将仅为false。否则,即使SELECT语句没有返回任何行,它也将始终返回资源ID。
使用mysqli_num_rows()
计算返回的行数。零意味着没有人使用该电子邮件地址。
if(mysqli_num_rows($r))
echo "Email address exists!";
else
echo "sss";
答案 1 :(得分:4)
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";
?>
答案 2 :(得分:0)
mysqli_query
将在成功时返回结果对象,并在失败时返回false
。未选择任何行不被视为失败。您可以使用mysqli_num_rows
检查返回的行数。
答案 3 :(得分:0)
需要测试一下 <ListGroupItem active tag="button" action onClick={this.props.toggleCollapse}>
<Collapse isOpen={this.props.collapse} />
是否为真以及行数是否大于0。
以下作品:
$r