Php 登录页面“mysqli_查询”

Php 登录页面“mysqli_查询”,php,mysql,mysqli,Php,Mysql,Mysqli,我正在使用sql数据库设置web服务器 一直在看关于它的视频,直到这个问题出现之前,一切看起来都在进行中 <?php function user_exists($username) { $username = sanitize($username); $con = mysqli_connect('localhost', 'root', ''); $query = mysqli_query("SELECT COUNT (`id`) FROM users WHERE u

我正在使用sql数据库设置web服务器 一直在看关于它的视频,直到这个问题出现之前,一切看起来都在进行中

<?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;

}
?>
可恢复的致命错误:

类mysqli的对象无法在中转换为字符串 第5行的C:\xampp\htdocs\login\core\functions\users.php


注意:-我已从本视频中引用,但我已将mysql_*更改为mysqli_*[

您尚未在函数中传递数据库名称,需要将连接变量作为第一个参数传递。您可以从查询中删除COUNT,并使用它来计算行数

 $username = sanitize($username);
$con = mysqli_connect('localhost', 'root', '','databasename');//<- database name is required
$query = mysqli_query($con,"SELECT (`id`) FROM users WHERE username = '$username'");
return (mysqli_num_rows($query) > 0 ) ? true : false;

我建议您使用来防止sql注入

您尚未在函数中传递数据库名称,需要将连接变量作为第一个参数传递。您可以从查询中删除COUNT,并使用来计算行数

 $username = sanitize($username);
$con = mysqli_connect('localhost', 'root', '','databasename');//<- database name is required
$query = mysqli_query($con,"SELECT (`id`) FROM users WHERE username = '$username'");
return (mysqli_num_rows($query) > 0 ) ? true : false;
我建议您使用以防止sql注入

使用mysqli\u fetch\u row函数。它将获取一行

使用mysqli_fetch_row函数。它将获取一行

需要注意的几件事

连接对象需要在函数的作用域中可见。最好的方法是将参数传递到函数中,避免在函数中使用全局或创建连接。 mysqli_result不是mysqli_中存在的函数。它仅存在于mysql_中,已弃用,不应使用。 在处理用户输入或任何类型的变量时,最好使用预先准备好的语句 您可以返回表达式$count==0而不是$count==0?true:false,因为它们是等效的。 函数用户_存在$username,$conn{ $stmt=$conn->prepareSELECT COUNTid 来自用户 其中username=?; $stmt->bind_参数,$username; $stmt->execute; $stmt->bind_result$count; $stmt->fetch; $stmt->close; 返回$count==0; } 现在,当您调用它时,请记住传入$conn参数或您的连接对象定义为的任何对象

$conn=mysqli_connect'localhost','root','root','databasename';//相应地更改凭据 如果用户_存在$username,$conn{ //用户确实存在! }否则{ //用户不存在 } 需要注意的几件事

连接对象需要在函数的作用域中可见。最好的方法是将参数传递到函数中,避免在函数中使用全局或创建连接。 mysqli_result不是mysqli_中存在的函数。它仅存在于mysql_中,已弃用,不应使用。 在处理用户输入或任何类型的变量时,最好使用预先准备好的语句 您可以返回表达式$count==0而不是$count==0?true:false,因为它们是等效的。 函数用户_存在$username,$conn{ $stmt=$conn->prepareSELECT COUNTid 来自用户 其中username=?; $stmt->bind_参数,$username; $stmt->execute; $stmt->bind_result$count; $stmt->fetch; $stmt->close; 返回$count==0; } 现在,当您调用它时,请记住传入$conn参数或您的连接对象定义为的任何对象

$conn=mysqli_connect'localhost','root','root','databasename';//相应地更改凭据 如果用户_存在$username,$conn{ //用户确实存在! }否则{ //用户不存在 }
mysqli_结果不是函数。此视频一点也不好。不要在where子句中传递$con,请尝试mysqli_query$con,从username='$username'的用户中选择COUNT id;mysqli_结果不是函数。此视频一点也不好。不要在where子句中传递$con,请尝试mysqli_query$con,从username='$username'的用户中选择COUNT id;thi这个答案似乎是所有答案中最完美的