1

MySQLオブジェクトを反復処理し、別のページでajax呼び出しを使用してデータを追加しようとしていますが、phpが有効なJSONをコールバックに返すようにできません。

これは明らかに機能しません...

<?php

    $db_host = "localhost";
    $db_user = "blah";
    $db_pass = "blah";
    $db_name = "chat";
    $mysqli = new MySQLi($db_host, $db_user, $db_pass, $db_name);
    $myQuery = "SELECT * FROM users";
    $result = $mysqli->query($myQuery) or die($mysqli->error);
    $row = $result->fetch_assoc();
    echo json_encode($row);

?>

またはこれ...

<?php

    $db_host = "localhost";
    $db_user = "blah";
    $db_pass = "blah";
    $db_name = "chat";
    $mysqli = new MySQLi($db_host, $db_user, $db_pass, $db_name);
    $myQuery = "SELECT * FROM users";
    $result = $mysqli->query($myQuery) or die($mysqli->error);
    while ( $row = $result->fetch_assoc() ){
        echo json_encode($row) . ", ";
    }

?>
4

3 に答える 3

14
$data = array();

while ( $row = $result->fetch_assoc() ){
    $data[] = json_encode($row);
}
echo json_encode( $data );

これでうまくいくはずです。また、http://jsonlint.com/を使用して、JSON出力の問題を確認できます。

更新:使用fetch_all()することも良い考えかもしれません

$data = $result->fetch_all( MYSQLI_ASSOC );
echo json_encode( $data );
于 2012-08-09T22:12:05.230 に答える
2

私はこれを使用します:

    $json = array();

    if(mysqli_num_rows($result)){
        while($row=mysqli_fetch_assoc($result)){
                $json[]=$row;
        }
    }
    mysqli_close($mysqli);
    echo json_encode($json);

?>

そして私はこのようなものを手に入れます

[{"id": "2"、 "usuario": "zeldafranco"、 "password": "lol"}、{"id": "3"、 "usuario": "franco"、 "password": "franco "}、{" id ":" 4 "、" usuario ":" peteko "、" password ":" sanpeteko "}、{" id ":" 5 "、" usuario ":" prueba "、" password ": "prueba"}、{"id": "6"、 "usuario": "test"、 "password": "test"}、{"id": "7"、 "usuario": "pibe"、 "password ":" hola "}、{" id ":" 8 "、" usuario ":" que ase "、" password ":" que ase "}、{" id ":" 9 "、" usuario ":" trt "、"パスワード":"trt"}、{"id": "10"、 "usuario": "tyt"、 "password": "tyt"}]

于 2014-01-27T17:38:49.723 に答える
-2
$arrUsers = array();

$fetch = mysql_query("SELECT * FROM users"); 

while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) {



 $arrUsers['id'] = $row['name'];
    $arrUsers['col1'] = $row['col1'];
    $arrUsers['col2'] = $row['col2'];

    array_push($arrUsers,$row_array);

}

echo json_encode($arrUsers);
于 2012-08-09T22:15:42.603 に答える