所以我想计算与给定'用户名'匹配的条目数,并取决于它的0或1我想要返回true或false。但我不知道怎么做。我找不到mysqli中的mysql_return等价物。 $ username是另一个脚本文件中的已定义变量。
<?php
function user_exists($username) {
$query = mysqli_query($connect, "SELECT COUNT('userid') FROM 'users' WHERE 'username' = '$username' ");
return (mysqli_result($query, 0) == 1) ? true : false ;
}
?>
这是我将使用user_exists()函数的地方。
<?php
include 'core/init.php';
if (empty($_POST) === false) {
$username = $_POST['username'];
$password = $_POST['password'];
if (empty($username) === true || empty($password) === true) {
$errors[] = 'You need to enter a user name and password';
}
else if (user_exists($username) === false) {
$errors[] = "Username not found.";
}
}
?>
我可以包含init.php文件,但似乎没有必要。它只是一个包含并需要一堆其他文件的文件。包括具有user_exists()函数的那个。这是我的连接脚本,也包含在init.php
中<?php
$connect_error = "Connection Problem";
$connect = mysqli_connect('localhost', 'root', '', 'people') or die(connect_error);
?>
答案 0 :(得分:1)
您的查询语法有一些错误,请仔细检查。
要获得行数,我相信SELECT EXISTS(SELECT 1 FROM...)
效率最高。
我还传递了与此函数的连接,请记住mysqli_
任务函数都需要连接句柄才能工作,这是将mysql_
转换为mysqli_
<的主要问题之一/ p>
我还准备了语句并绑定了param以缓解SQL注入问题。
并添加了一些错误处理,将错误写入php错误日志。
<?php
function user_exists($con, $username) {
$cnt = 0;
$sql = "SELECT EXISTS(SELECT 1 FROM `users` WHERE `username` = ?";
$stmt = mysqli_prepare($con, $sql);
if ( $stmt === false ) {
error_log('user_exists() count failed: ' . mysqli_stmt_error($stmt), 0);
exit;
}
mysqli_stmt_bind_param($stmt, 's', $username);
$res = mysqli_stmt_execute($stmt);
if ( $res === false ) {
error_log('user_exists() count failed: ' . mysqli_stmt_error($stmt), 0);
exit;
}
mysqli_stmt_bind_result($stmt, $cnt);
return $cnt == 1;
}
?>
现在你必须修改对
的调用user_exists($connection, $username)