0

データベーステーブルのすべての行を含むJSONオブジェクトリテラルを単純にエコーしようとしています。

私が見た他の多くの同様の質問に見られるメソッドの標準として、私はすべての行をフェッチし、次のようにエンコードしています。

$con=mysqli_connect("localhost","username","pass","markers");//markers is db table name
$result = mysqli_query($con,"SELECT * FROM markers");

$rows = array();

while($r = mysqli_fetch_array($result))
  {
       $rows[] = $r
       //or: $rows[] = array('data' => $r);
  }

echo json_encode($rows);

質問PHPと同様に、複数の行を持つjsonまたはmysqlテーブルをjsonにエンコードすることはできません。

次のようなJSONオブジェクトをエコーし​​たい:

    {
    "data1":   // how do I get "data1"?
        {
            name: John Smith,
            title: Mr,
            description: a man
        }
    }

    {
    "data2":{ // how do I get "data2"? 
            name:Bob Smith,
            title: Mr,
            description: another guy
        }

    }

「ヘッダー」を取得する方法がわからない場合を除いて、「data1」や「data2」などのオブジェクトの第1レベルの文字列のタイトル。実際、データベーステーブルには必ずしもそれらの値/その列が含まれているとは限りません。

これは現在のように見えます: データベーステーブル

「名前」列を「ヘッダー」として指定せずに、「1」、「2」、「data1」、「data2」などの単純な数値の「ヘッダー」を取得するにはどうすればよいですか。 (または、そのための列が必要ですか?)

私の目標は、返されたJSONのすべての「行」の値を処理することです。

jQ $ .each関数を使用する予定です。$.each(data, function(dataNum, dataInfo)たとえば、data1はdataNumに渡され、値はdataInfoに渡されます。また、によって特定のテーブル値にアクセスできますがdataInfo.name、現在は機能していません。

事前に助けてくれてありがとう!

4

2 に答える 2

2

mysqli_fetch_object()各行を独自のオブジェクトとして取得するために使用する方がはるかに良いと思います。次にjson_encode$rowsを実行すると、オブジェクトの配列が作成されます。

コードは次のとおりです。

$con=mysqli_connect("localhost","username","pass","markers");//markers is db table name
$result = mysqli_query($con,"SELECT * FROM markers");

$rows = array();

while($r = mysqli_fetch_object($result))
  {
       $rows[] = $r;
  }

echo json_encode($rows);

JSONは次のようになります。

[
    {
        "name":"Some Name",
        "title":"Some Title",
        "description":"Some description"
    },
    {
        "name":"Some Other Name",
        "title":"Some Other Title",
        "description":"Some other description"
    },
    ...
]

javascriptでは、整数でインデックス付けされたオブジェクトの配列が得られます。したがって、JavaScriptは次のようになります。

var array = JSON.parse(jsonString);
$.each(array, function(key, value) {
    alert(key); // numerical index
    alert(value.name); // name
    alert(value.title); // title
    alert(value.description); // description
});
于 2013-03-26T00:12:22.670 に答える
0

$rows変数にインデックスを作成します。

<?php

$t['a'] = array ('name' => 'foo');
$t['b'] = array ('name' => 'bar');

echo json_encode ($t);
?>

あなたの場合、単純な整数でうまくいくか$rows['data' . $i]、$i++が後に続くようなものです。

于 2013-03-26T00:08:17.867 に答える