小编典典

我的SELECT查询失败,该如何解决?

sql

我有此代码:

$sql=mysqli_query($con,"SELECT username, password, email FROM users WHERE username=$username");
    if(mysqli_num_rows($sql)>=1)
    {
        echo "<div class='form'>
        <h3>Username already in use.</h3></div>";
    }

使用此代码时,它将返回以下警告:

警告:mysqli_num_rows()期望参数1为mysqli_result,布尔值在…中给出

为什么它显示此警告,我该如何解决?


阅读 423

收藏
2021-05-16

共1个答案

小编典典

您运行查询的方式是错误的。它容易出错,并且总是会给您这样的错误。而且,它也易于进行SQL注入。

将变量直接添加到查询中时,其内容可能会受到干扰,这会导致很多麻烦,从此类错误到SQL注入。要彻底摆脱此类错误,您必须先准备好查询,在变量旁边添加问号,然后分别发送。这样,它将永远不会干扰。

您必须先准备查询,然后绑定变量,然后执行:

$sql = "SELECT username, password, email FROM users WHERE username=?";
$stmt = $con->prepare($sql);
$stmt->bind_param("s", $username);
$stmt->execute();
$res = $stmt->get_result();
if($res->num_rows())
{
    echo "<div class='form'>
    <h3>Username already in use.</h3></div>";
}
2021-05-16