0

ID の配列を要求し、その ID を持つ各行を返し、それぞれを配列にプッシュしようとしています$finalArray

ただし、クエリの最初の結果のみが出力され、2 番目の結果はループforeachをスキップします。while

これは別のスクリプトで機能しているため、どこが間違っているのかわかりません。

は以下$arrayItemsを含む配列です。"home, info"

 $finalArray = array(); 
 foreach ($arrayItems as $UID_get)
 {
     $Query =   "SELECT * 
                FROM items
                WHERE (uid = '" . cleanQuery($UID_get) . "' )
                ORDER BY uid";

  if($Result = $mysqli->query($Query))
  {
        print_r($UID_get);
        echo "<BR><-><BR>";

      while ($Row = $Result->fetch_assoc())
      {
        array_push($finalArray , $Row);
        print_r($finalArray );
        echo "<BR><><BR>";
      }
   } 
   else
   {
    echo '{ "returned" : "FAIL" }'; //. mysqli_connect_errno() . ' ' . mysqli_connect_error() . "<BR>";
   }
 }

(cleanQueryはエスケープしてスラッシュを削除します)

私が取得しようとしているのは、複数の行の配列です(次のようにjson_encodeした後:

{ "finalArray" : 
    { "home": 
        { "id":"1",
          "created":"0000-00-00 00:00:00",
          "css": "{ \"background-color\" : \"red\" }"
        } 
    }, 
    { "info": 
        { "id":"2",
          "created":"0000-00-00 00:00:00",
          "css":"{ \"background-color\" : \"blue\" }"
        } 
    } 
}

しかし、それはデータベースから両方、またはそれ以上の結果を取得した後です。

print_r($UID_get);印刷しますinfoが、何もしません..

では、なぜ から 2 行目を取得できないのinfoでしょうか。私は本質的に foreach $arrayItem を再クエリしていますよね?

4

2 に答える 2

0

結局のところ... 2番目の項目の配列の先頭のスペースは、次のようにトリミングする必要がありました。

trim($UID_get);

ありがとうGBD

于 2012-11-12T12:04:28.940 に答える
0

mysql リソースから配列をフェッチした後、フェッチした配列をパラメーターとして渡すことにより、次の関数を実行してみてください。(while ループ内)

    function array_remove_indexes(&$arr)
    {
        $new_arr = array();
        foreach($arr as $name => $val)
        {
            if(!is_int($name))$new_arr[$name]=$val;
        }
        $arr = $new_arr;
    }
于 2012-11-12T12:18:27.437 に答える