我一直在使用像这个视频中的登录/注册系统:https://www.youtube.com/watch?v=Til3oVNlho4&index=7&list=PLE134D877783367C7,但问题是它使用的是Mysql而不是Mysqli函数,这使我几乎不可能理解为一个初学者。基本上,我坚持数据库检查是否" user_exists"功能。有人能指出我正确的方向吗?
<?php
function user_exists($username) {
include 'core/database/connect.php';
$username = sanitize($username);
$sql = "SELECT COUNT(user_id) FROM `users` WHERE username = '$username'";
$query = mysqli_query($db, $sql);
return (mysqli_result($query, 0) == 1) ? true : false;
}
function mysqli_result($res,$row=0,$col=0) {
$numrows = mysqli_num_rows($res);
if ($numrows && $row <= ($numrows-1) && $row >=0){
mysqli_data_seek($res,$row);
$resrow = (is_numeric($col)) ? mysqli_fetch_row($res) : mysqli_fetch_assoc($res);
if (isset($resrow[$col])) {
return $resrow[$col];
}
}
return false;
}
?>
然后我正在检查该用户是否存在:
if (user_exists('bill') === true) {
echo 'exists';
} else {
echo 'not ok';
}
即使用户在我的数据库中,也始终返回为真。
答案 0 :(得分:0)
$numrows
的条件总是计算为0.因此它返回false,因此不是真的。
答案 1 :(得分:0)
function user_exists($username) {
include 'core/database/connect.php';
$username = sanitize($username);
$sql = "SELECT user_id FROM `users` WHERE username = '{$username}'";
$result = mysqli_query($db, $sql);
$num_rows = mysqli_num_rows($result);
return $num_rows > 0 ? true : false;
}
&#13;
试试看,你不需要第二个功能。这段代码不检查验证或实现try / catch块。我修改了你的SQL语句,因为你只需要查看结果是否返回了高于零的结果。