ホームページ > バックエンド開発 > PHPチュートリアル > このようなネストされたクエリでは、なぜデータが見つからないのでしょうか?

このようなネストされたクエリでは、なぜデータが見つからないのでしょうか?

WBOY
リリース: 2016-06-13 13:21:11
オリジナル
1018 人が閲覧しました

このようなネストされたクエリでデータが見つからないのはなぜですか? データ テーブル "Product" の構造とデータ:




PHP コード

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
include_once('conn.php');
$result = mysql_query("SELECT p_class FROM Product group by p_class limit 40");//第一查询,已经能成功获得数据
 mysql_data_seek($result, 0);
    while ($row=mysql_fetch_row($result))
    {
      for ($i=0; $i<mysql_num_fields($result); $i++ )
      {
       $tmp=$row[$i]; //把查询结果赋值为新变量:$tmp
       echo $tmp;//这里已经可以在web段显示正确的字段内容

       $result2 = mysql_query("SELECT * FROM Product where p_class=$tmp limit 0,4");//开始嵌套查询
       while ($row=mysql_fetch_row($result2))
    {    
            echo $row['pic'];     //这里查不到数据
            echo $row['p_class']; //同上
            echo $row['p_name'];  //同上
        }
      } 
    }   
mysql_free_result($result);
mysql_free_result($result2);
mysql_close($conn);

ログイン後にコピー

上記のコードでは、ループの数は正しく、最初のクエリも正しいですが、2 番目のクエリにはデータがありません。


-----解決策--------------------------------あなたは while $row= then $row= ....2 番目の $row を $row2= に変更し、残りをこのように変更しましょう。コードを注意深く見ていませんでした。まだ。

------解決策---------これはあなたと同じ問題です
mysql_fetch_row
は mysql_fetch_assoc()

に変更する必要があります。通常、連想配列を返します。

------解決策------------------ 使用しているのは
連想配列
echo $row['pic']; // ここにはデータが見つかりません
echo $row['p_class']; // 上記と同じ
echo $ row ['p_name']; //上記と同じ

したがって、数値に一致する連想配列を返す必要があります。 。 。よく理解できない場合は、返された結果を print_r して構造を確認してください。

一般に、連想配列が返されるため、コードの作成が容易になります。これは、実際の状況によって異なります。もちろん、2 つの形式を返す mysql_fetch_array を使用することもできます。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート