查询结果不会被回应

时间:2012-04-22 00:25:09

标签: php mysql function mysqli echo

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

    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不会被显示以及为什么在0结尾有$results所以如果有人可以给我建议解决这个问题我真的很感激。非常感谢。

3 个答案:

答案 0 :(得分:1)

$ results_num是0. $结果是 - SELECT a FROM b WHERE keywords LIKE'%abc%' 试试这个

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

一切都会显露出来:)。

答案 1 :(得分:1)

首先,$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。

答案 2 :(得分:0)

$results是您的查询字符串。您不能像往常一样将字符串传递给mysqli_num_rows(),它期望mysqli_query()返回结果集标识符。在你的情况下它是$query(你可能想改变你的变量名称以使其更有意义,BTW)。