如何检查查询是否返回了一些值? (MySQL,Php)

时间:2015-01-17 09:20:54

标签: php mysql database

我正在创建一个注册系统,我希望有一个查询来检查用户输入的用户名是否尚未存在或者尚未被其他人拥有。但到目前为止,我还没有成功。我试着看一些与我有关的问题和答案,但大多数我无法理解或大部分都没有为我工作。还请记住,我是PHP的业余爱好者。

$mysqli = mysqli_connect("localhost", "php24sql", "some password","smithside");
$query2 = "SELECT registered FROM contacts WHERE LRN = '$lrn'";
$query2 = mysqli_query($mysqli, $query2) or die(mysqli_error($mysqli));
$row = mysqli_fetch_assoc($query2);
$registered = $row['registered'];
if ($registered == 0) {
$query = "UPDATE contacts SET first_name = '$fname', last_name = '$lname', position = 'none', email = '$email', phone = '$contact', user_name = '$uname', password = '$pass1', access = 'Registered', registered = 1 WHERE LRN = '$lrn'";
$query = mysqli_query($mysqli, $query);
echo "Registration successful!";

$query4 = "SELECT user_name FROM contacts WHERE user_name = '$uname'";
$query4 = mysqli_query($mysqli, $query4); 
$row4 = mysqli_fetch_assoc($query4);
} elseif (mysql_num_rows($query4) > 0) {
echo "Registration failed. Username already taken.";
} else {
echo "Registration failed. LRN already taken.";
}

提前多多感谢!

1 个答案:

答案 0 :(得分:0)

$num_rows = mysqli_num_rows($query);
if($num_rows == 0)
{
//user name doesn't exist
}
else
{
//user name exists
}

您正在寻找mysqli_num_rows功能 - http://php.net/manual/en/mysqli-result.num-rows.php


此外,您可以在db" UNIQUE"中创建字段,然后一直提交已存在的值,MySQL将返回错误。


PS 您的代码中存在致命SQL注入安全错误。在将任何值发送到DB之前,您必须"清理"它们来自特殊字符 - http://php.net/manual/en/mysqli.real-escape-string.php您可以使用此函数来实现它!