2017-06-28 5 views
1

私のアプリがどのようにクエリを構築し、結果をループするかを簡単にしたいと思います。実際のコードのほとんどは動作しますが、PHPがクエリからフェッチした結果をすべて表示しない点が異なります。フィールドの配列を作成してPHPのループセットを作成する

はじめに:コード例の前に、実稼働環境では使用しないでください。

まず、クエリを作成します。

ここでクエリを実行し、結果セットをループします。
プロのヒント:このコードを重要なものとして使用しないでください。デモの目的のみです。予想通り

echo "<table>"; 
    $res = doQuery($q); 

    // create report body 
    foreach($res as $r) 
    { 

     // set values from array of field names 
     $row_fields = ''; 
     foreach ($arr_fields as $f) 
     { 
      // set current $arr_field value inside a table cell... 
      $row_fields.= "<td>$r[$f]</td>"; 
     } 

     // display the row 
     echo "<tr>$row_fields</tr>"; 

    } 
echo "</table>"; 
$arr_fields

color)から最初のデータベースの値が出力され、残りの部分ではありません。

MySQLコンソールで発行された組み立てられたクエリは、color, number and sizeの値を示します。スクリプトによって生成されたSQLエラーはありません。

なぜPHPは最初のフィールドの値を表示しますが、他の2つはスキップしますか?

+0

'print_r($ res);'とは何ですか?残念ながら動作(しかしクリーナー見えるので、先端を有して)いなかった – AbraCadaver

+0

'アレイ ( [色=>赤 [番号] => 33145551 [サイズ] =>大 )' –

答えて

0

変更この行:

$row_fields.= "<td>$r[$f]</td>"; 

へ:

$row_fields.= "<td>".$r[$f]."</td>"; 
+0

。私はこれを試している間に問題を発見しました。ソース配列内のフィールド名の前に空白があります。一度それらを削除すると、結果が表示されます。 –

+1

ああ、置き忘れられたスペース。それは見つけるのは面倒です。この質問に自己回答を例にして投票します。 –

+2

これは問題ではありませんでしたが([]内の変数ではなく定数では動作しないようです)、私は{}の方が好きです: "​​{$ r [$ f]}" PS:私は実際にそれが問題だと最初に考えましたが、投稿する前にテストしていたと考えました。私はそれが実際に変数で使用されたときに失敗しないことに驚いたので、今日何かを学んだので... ... @acoderと思われる空間を台無しにしたことに感謝します;) – Jay

1

問題は、(上記の例で示されていない)私の配列内のフィールド名の各スペースの前にあることが判明しました。

フィールド・アレイは、実際に、私はスペースを削除した後

$arr_fields = array('color', ' number', ' size'); 

は、値がいつものように現れました。ノルベルトが、追加のテストを通して正しい方向に向けるのを助けてくれてありがとう。

関連する問題