ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

ド素人でも問題ないPHPサークルコミュの質問 条件に合う件数を表示する

  • mixiチェック
  • このエントリーをはてなブックマークに追加
検索フォームに入力された言葉が含まれる件数を表示するプログラムを練習でつくっているのですが、うまくできないので教えてください。

for($i = 0; $word[$i] != null; $i++) {
$hit_query[$i] = " SELECT COUNT(*) FROM " . "ZIP" . " WHERE KeyWord LIKE '%$word[$i]%' ";
$hit_result[$i] = mysql_query($hit_query[$i]);
$hit[$i] = mysql_fetch_array($hit_result[$i]);
}


foreach ($hit as $key => $value) {
echo "$hit_query[$key]" . "<br>";
echo "$hit_result[$key]" . "<br>";
echo "$hit[$key]" . "<br>";
echo "ここまで" . "$key" . "<BR>";

if($hit[$key] > 0){

echo "ヒット!";
}

}

↑のコードで表示されるHTMLは「てst」という言葉の場合は下記の通りになります。てstという言葉はデータベース上にないので、0件と出て欲しいのですが…。

SELECT COUNT(*) FROM Gazou WHERE KeyWord LIKE '%てst%'
Resource id #3
Array
ここまで0
ヒット!

$hitに件数入るものじゃないんでしょうか?

コメント(1)

mysql_fetch_array関数の戻り値は、第2引数のオプションがなんであれ、配列型です。
つまり、現状の$hit[$i]には、何らかの配列が入っていると考えてください。

SQL文を見てみると、count(*)カラムを取得しているので、
$hit[$i]['count(*)'](これが使えたか忘れましたが)か、
$hit[$i][0]にアクセスしないと、件数を取得できません。

この1行を
> $hit[$i] = mysql_fetch_array($hit_result[$i]);

このように
> $row = mysql_fetch_array($hit_result[$i], MYSQL_NUM);
> $hit[$i] = $row[0];
あるいは、list関数を使って
list($hit[$i]) = mysql_fetch_array($hit_result[$i], MYSQL_NUM);
と変更すると、$hit[$i]に件数が入るものと思われます。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

ド素人でも問題ないPHPサークル 更新情報

ド素人でも問題ないPHPサークルのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング