如果包含,则查询为空

时间:2014-01-22 02:03:15

标签: php mysql

我一直在我的页面内执行查询 - 比如,page.php - 我运行一个简单的查询。

伪代码:

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

当从page.php中执行此操作时,我得到所有结果,其中availble设置为0.但是,如果我从一个单独的包含文件中运行它,则数据返回空。实际上,mysqli_num_rows在包含时返回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>";
    }
}

2 个答案:

答案 0 :(得分:1)

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

  

注意:未定义的变量$ mysqli

     

警告:mysqli_query()期望参数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.....
}

答案 1 :(得分:0)

试试这个。请检查可用表是否需要字符串值或整数。

$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
  }