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、出力の最後に 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;

そして、2行目は実際には次のようになります。

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

SQL ではなく、クエリ ハンドルを に渡す必要がありmysqli_num_rows()ます。

于 2012-04-22T00:37:35.283 に答える
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 に答える
0

$resultsあなたのクエリ文字列です。に文字列を渡すことはできません。 からmysqli_num_rows()返される結果セット識別子が必要ですmysqli_query()。あなたの場合はそう$queryです(ところで、変数名をより意味のあるものに変更したいかもしれません)。

于 2012-04-22T00:35:03.970 に答える