Php mysqli_fetch_assoc()希望参数1是mysqli_结果,布尔值在

Php mysqli_fetch_assoc()希望参数1是mysqli_结果,布尔值在,php,mysqli,Php,Mysqli,在密码附近的查询中使用逗号(,)并将其替换,这就是查询返回false并抛出该错误的原因 <?php require_once("connect.php"); $login1 = $_POST['email']; $password1 = $_POST['password']; $select = "SELECT id FROM loginregistration WHERE login ='$login1', password ='$password1'"; $sql = mysql

在密码附近的查询中使用逗号(,)并将其替换,这就是查询返回false并抛出该错误的原因

<?php
require_once("connect.php");

$login1 = $_POST['email'];
$password1 = $_POST['password'];
$select = "SELECT id FROM loginregistration WHERE login ='$login1', password   ='$password1'";
$sql = mysqli_query($con,$select);
$row = mysqli_fetch_assoc($sql);
?>`
更新1

如果查询失败,则返回false。因此,您可以使用mysqli_error($con);知道错误

$select = "SELECT id FROM loginregistration WHERE login ='".$login1."' and password ='".$password1."'";

您应该做的第一件事可能是修复SQL注入漏洞(),这样您就可以实际控制执行的查询,而不是让用户定义自己的查询。接下来要做的事情是在执行任何查询后检查错误,不要假设它成功。数据库正在告诉您问题所在,但此代码忽略了该错误消息。请在password$select=“select id FROM login registration WHERE login='”“$login1.”和password='“$password1.”附近使用连接并删除逗号;我不同意大卫。。。你应该做的第一件事就是停止用纯文本存储密码!!!花些时间研究如何安全地管理登录凭据。这是否回答了您的问题?
    <?php
    require_once("connect.php");

    $login1 = $_POST['email'];
    $password1 = $_POST['password'];
    $select = "SELECT id FROM loginregistration WHERE login ='".$login1."' AND password   ='".$password1."'";
    $sql = mysqli_query($con,$select);

    if($sql === FALSE) { 
        die(mysqli_error($con)); // better error handling
    }

    $row = mysqli_fetch_assoc($sql);
    ?>