6

私はPhpを初めて使用し、jsonデータをphpからandroidに送信しようとしています。データベースから値を読み取るために、phpに次のコードがあります。

<?php
$con=mysql_connect("localhost","root","");

if(! $con)
{
        die('Connection Failed'.mysql_error());
}

mysql_select_db("registration",$con);
$name="Adam";//$_POST["name"];
$password="charles";//$_POST["password"];
$sql="SELECT * FROM users WHERE name='$name'and password='$password'"; 

$result=mysql_query($sql, $con);
while($row = mysqli_fetch_array($result))     
{
    $details= array(
        'name' => $row['name'],
        'password' => $row['password'],

    );
    array_push($json, $bus);
}

$jsonstring = json_encode($json);
echo $jsonstring;
mysql_close();
?>

出力が次のようになることを期待しています。

[{"name":"Adam","age":"25","surname":"charles"}]

JSONデータが間違っていなければ。しかし、これは私にエラーを与えます:

mysqli_fetch_array() expects parameter 1 to be mysqli_result, resource given in...

そしてまた

Undefined variable: json in...

誰かが考えられるエラーを教えてください

4

5 に答える 5

11

このようにしてみてください

$result=mysql_query($sql, $con);
$json = array();
while($row = mysql_fetch_array($result))     
 {
    $json[]= array(
       'name' => $row['name'],
     'password' => $row['password']
    );
}

$jsonstring = json_encode($json);
 echo $jsonstring;

また、mysqli または PDO を使用できる場合、mysql は非推奨です。

于 2013-03-07T21:07:37.800 に答える
8

sam と pitchinnate によって提案された変更に加えて、php ヘッダーを追加してコンテンツ タイプを json に設定することも検討してください。

header('Content-type: application/json');

つまり、android を使用して json 情報をリモートで要求している場合です。

于 2013-03-07T21:10:09.580 に答える
1

で使用mysql_queryしていmysqli_fetch_arrayます。を使用する必要がありますmysql_fetch_array

ただし、mysql_* 関数はもう使用しないでください。

また別のエラー:

array_push($json, $bus); // i believe $bus should be replaced with $details
于 2013-03-07T21:06:07.930 に答える
0

変数 $result (var_dump()); の内容を確認する必要があると思います。実際、結果が定義されていない場合、プログラムはループに入らず、$json は定義されません。

于 2013-03-07T21:09:56.967 に答える
0

未定義の変数: array_push($json, $bus) を実行しようとしているが、$json が存在しないため、json が発生します。

最初に宣言する必要があります

$json = Array();

mysql エラーは、mysql と mysqli モジュールを混在させているために発生する可能性が最も高いです。

mysqli のみを使用します。

$con=mysqli_connect("localhost","root","");
mysql_select_db("registration",$con);
...
$result=mysql_query($sql, $con);

また、パスワードを平文で保存するのも一般的には良い考えではありません。少なくともハッシュ関数の使用を検討してください。

于 2013-03-07T21:11:06.420 に答える