php - 登录页面 "mysqli_query"

标签 php mysql mysqli

我正在设置一个带有 sql 数据库的网络服务器 一直在观看有关它的视频,一切看起来都在进行中,直到出现此问题

<?php
function user_exists($username) {
    $username = sanitize($username);
    $con = mysqli_connect('localhost', 'root', '');
    $query = mysqli_query("SELECT COUNT (`id`) FROM users WHERE username = '$con,$username'");
    return (mysqli_result($query, 0) == 1) ? true : false;

}
?>

可恢复的 fatal error :

Object of class mysqli could not be converted to string in C:\xampp\htdocs\login\core\functions\users.php on line 5

注意:- 我引用了这个视频,但是我已经将 mysql_* 更改为 mysqli_* [ https://www.youtube.com/watch?v=Til3oVNlho4]

最佳答案

注意事项

  1. 连接对象需要在函数范围内可见。最好的方法是将参数传递给函数(避免使用 global 或在函数内创建连接)。
  2. mysqli_result() 不是 mysqli_ 中存在的函数。它仅存在于 mysql_ 中,已弃用且不应使用。
  3. 在处理用户输入或任何类型的变量时,最好使用准备好的语句
  4. 您可以返回表达式 $count == 0 而不是 $count == 0 吗? true : false,因为它们是等价的。
function user_exists($username, $conn) {
    $stmt = $conn->prepare("SELECT COUNT(id) 
                            FROM users 
                            WHERE username=?");
    $stmt->bind_param("s", $username);
    $stmt->execute();
    $stmt->bind_result($count);
    $stmt->fetch();
    $stmt->close();

    return $count == 0;

}

现在,当您调用它时,请记住传递 $conn 参数(或您的连接对象定义的任何内容)。

$conn = mysqli_connect('localhost', 'root', 'root', 'databasename'); // Change credentials accordingly
if (user_exists($username, $conn)) {
    // User does exist!
} else {
    // User does not exist
}

关于php - 登录页面 "mysqli_query",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56160835/

相关文章:

mysql - 从多个表中获取具有条件的最新值

php - 使用选择框获取数据库

php - 使用MySQL验证的php中的登录表单

php - 需要双击才能插入数据库

php - 如何将 html 连接到 Azure 数据库?

php - 如何从 Laravel 中的 2 个连接中删除重复项

mysql - 来自 mysql 表的报告数据

php - 多个SubSelect内连接Mysql

php - 运行 CodeIgniter 项目

php - 带有 MySQLi 的 PHP 中的多个准备好的语句