Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mysql查询中使用php变量?卡住了_Php_Mysql_Session - Fatal编程技术网

在mysql查询中使用php变量?卡住了

在mysql查询中使用php变量?卡住了,php,mysql,session,Php,Mysql,Session,这是我的代码,每次它都将$query和$query->num\u行返回为NULL。 我确信我的桌子上有“mehdijjz”(美元usr)。 我认为问题在于$sql代码的语法。 我太困了…:(你怎么看?看,这就是为什么我讨厌程序化的mysqli API。如果你习惯了mysqli API,那么你的参数就错了 无论如何,你应该 使用准备好的语句注入查询值 在php.iniconfig文件中为开发启用正确的错误报告 //check if the username which the user enter

这是我的代码,每次它都将$query和$query->num\u行返回为NULL。 我确信我的桌子上有“mehdijjz”(美元usr)。 我认为问题在于$sql代码的语法。
我太困了…:(你怎么看?

看,这就是为什么我讨厌程序化的mysqli API。如果你习惯了mysqli API,那么你的参数就错了

无论如何,你应该

  • 使用准备好的语句注入查询值
  • php.ini
    config文件中为开发启用正确的错误报告

    //check if the username which the user entered exists in the database
    $usr = $_SESSION['username'];
    $sql = "SELECT * FROM `login` WHERE username = '".$usr."'";
    $query = mysqli_query($sql,$conn);
    
    //if u found any row with that condition...
    if ($query->num_rows != 0)
    {
        //some code here.....
    }
    
  • 您还可以简化检查现有记录的逻辑

    error_reporting = E_ALL
    display_errors = On
    

    也许
    $query=mysqli\u查询($conn,$sql);
    会有帮助吗?我看不出SQL中有语法错误,但请务必研究使用准备好的语句,而不是像那样将值连接到SQL字符串中。您这样做应该是可行的,但对您的数据库不安全。此外,您的问题中的代码中没有包含这一点,因此您可能已经在这样做了,但在您之前尝试执行任何查询,确保您有一个正常运行的数据库连接。同时确保会话确实已启动。谢谢您的回答对我帮助很大!
    // make mysqli throw exceptions
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    
    $stmt = $conn->prepare('SELECT 1 FROM `login` WHERE `username` = ?');
    $stmt->bind_param('s', $_SESSION['username']);
    $stmt->execute();
    if ($stmt->fetch()) {
        //some code here.....
    }