我一直在我的页面内执行查询 - 比如,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>";
}
}
答案 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
}