查询结果不会被回显

Posted

技术标签:

【中文标题】查询结果不会被回显【英文标题】:query result wont be echoed 【发布时间】:2012-05-03 02:23:43 【问题描述】:

我有一个功能。在那个函数中有一个选择查询。另一个查询应该返回第一个查询中的结果数。我有这个代码:

    function name ($f)  
     global $db;
     ...
     $results = "SELECT `a` FROM `b` WHERE $where"; 
     $results_num = ($query = mysqli_query($db, $results)) ? mysqli_num_rows($results) : 0; 

     echo $results;
     echo $results_num;
    

会回显:

SELECT `a` FROM `b` WHERE `keywords` LIKE '%abc%'0 

什么是 $results 而不是 $results_num?我不明白为什么不会显示echo $results_num 以及为什么$results 末尾有0 所以如果有人可以给我建议解决这个问题,我真的很感激。非常感谢。

【问题讨论】:

不应该是mysqli_num_rows($query)吗? 【参考方案1】:

$results_num 为 0。$results 为 - SELECT a FROM b WHERE keywords LIKE '%abc%' 试试这个

echo "Results is $results <br />";
echo "Results_num is $results_num <br />";

一切都会显露出来的:)

【讨论】:

【参考方案2】:

$results 是您的查询字符串。你不能像你正在做的那样将字符串传递给mysqli_num_rows(),它需要mysqli_query()返回的结果集标识符。在您的情况下,它是 $query(您可能想更改变量名以使其更有意义,顺便说一句)。

【讨论】:

【参考方案3】:

首先,$results_num 为零并且正在输出(这就是为什么在输出末尾有一个0)。那是因为这段代码是错误的:

$results_num = ($query = mysqli_query($db, $results)) ? mysqli_num_rows($results) : 0; 

稍微说一下:

$query = mysqli_query($db, $results);
$results_num = $query ? mysqli_num_rows($results) : 0;

而第二行实际上应该是:

$results_num = $query ? mysqli_num_rows($query) : 0;

您需要将查询句柄传递给mysqli_num_rows(),而不是 SQL。

【讨论】:

以上是关于查询结果不会被回显的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PHP 从 mySQLi 查询中回显每一行?

如何在保持格式的同时从数据库中检索和回显文本[重复]

elementUI的级联选择器el-cascader

回显mysql_query的所有结果[重复]

mybatis如何查询多条sql语句返回前台页面回显数据

在php中回显/返回一个数组