Php 如果包含,则查询为空

Php 如果包含,则查询为空,php,mysql,Php,Mysql,我一直在我的页面中执行一个查询,比如page.php,在这里我运行一个简单的查询 伪代码: 当在page.php中执行此操作时,我将获得所有结果,其中available设置为0。但是,如果我在一个单独的包含文件中运行此命令,数据将返回空。事实上,mysqli_num_行在包含时返回0 这里怎么了 编辑 以下函数被添加为include,既作为函数,也作为单独的函数 function compte_messagerie() { $requetes_messagerie = mysqli_qu

我一直在我的页面中执行一个查询,比如page.php,在这里我运行一个简单的查询

伪代码:

当在page.php中执行此操作时,我将获得所有结果,其中available设置为0。但是,如果我在一个单独的包含文件中运行此命令,数据将返回空。事实上,mysqli_num_行在包含时返回0

这里怎么了

编辑 以下函数被添加为include,既作为函数,也作为单独的函数

function compte_messagerie()
{
    $requetes_messagerie = mysqli_query($mysqli, "SELECT * FROM ".DB_PREFIX."messagerie WHERE lu='0'");
    if(mysqli_num_rows($requetes_messagerie) == 0)
    {
        echo '<a id="messagerie" href="messagerie">'.AUCUN_NOUVEAU."</a>";
    }
    else if(mysqli_num_rows($requetes_messagerie) == 1)
    {
        echo '<a id="messagerie" href="messagerie">';
        echo '<span>'.mysqli_num_rows($requetes_messagerie)."</span> ";
        echo MESSAGES_SINGULIER."</a>";
    }
    else
    {
        echo '<a id="messagerie" href="messagerie">';
        echo '<span>'.mysqli_num_rows($requetes_messagerie)."</span> ";
        echo MESSAGES_PLURIEL."</a>";
    }
}

试试这个。请检查可用的表是require string value还是integer

$request_unavailble = mysqli_query("SELECT * FROM my_table WHERE availble= 0 ");

while($rows = mysqli_fetch_assoc($request_unavailble)){ // <- this will check if there some data fetch

  // You put some code here
  }

将查询移植到函数中时,$MySQLi中的MySQLi连接对象超出范围,因此在函数中无效。启用“显示错误”后,我希望您看到以下错误:

注意:未定义变量$mysqli

警告:mysqli_查询要求参数1为资源,给定为null

最干净的解决方案是将$mysqli作为参数传递到函数中,使其可用于函数的作用域

// Expect the MySQLi resource as a parameter...
function compte_messagerie($mysqli)
{
    $requetes_messagerie = mysqli_query($mysqli, "SELECT * FROM ".DB_PREFIX."messagerie WHERE lu='0'");
    if(mysqli_num_rows($requetes_messagerie) == 0)
    {
        echo '<a id="messagerie" href="messagerie">'.AUCUN_NOUVEAU."</a>";
    }
    // etc.....
}

发布更多代码。如果它在include中的行为不同,可能是变量作用域绊倒了您。你有错误报告吗?错误报告全部;ini设置“显示错误”,1;是,错误报告始终处于打开状态。我还根据请求添加了代码。正如我所怀疑的-$mysqli不在该function的作用域内。您的查询失败,但未检查其中的错误。您没有看到类似于mysqli_query期望参数1是resource的东西吗,给定null?我应该将其放在包含全局$db变量(包括$mysqli)的类中吗?好的,我添加了一个答案。
// Expect the MySQLi resource as a parameter...
function compte_messagerie($mysqli)
{
    $requetes_messagerie = mysqli_query($mysqli, "SELECT * FROM ".DB_PREFIX."messagerie WHERE lu='0'");
    if(mysqli_num_rows($requetes_messagerie) == 0)
    {
        echo '<a id="messagerie" href="messagerie">'.AUCUN_NOUVEAU."</a>";
    }
    // etc.....
}