0

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

    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所以如果有人可以给我建议解决这个问题,我真的很感激。多谢。

4

3 回答 3

1

$results_num 为 0。$results 为 - SELECT aFROM bWHERE keywordsLIKE '%abc%' 试试这个

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

一切都会显露出来:)

于 2012-04-22T00:30:20.940 回答
1

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

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

于 2012-04-22T00:37:35.283 回答
0

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

于 2012-04-22T00:35:03.970 回答