0

mysqlクエリを実行するスクリプトがあり、行がある場合はメッセージをエンコードします。ただし、メッセージとクエリの結果全体をエンコードする必要があります。これは私が使用するコードです:

<?php
include 'config.php';

// Connect to server and select databse.
mysql_connect("$dbhost", "$dbuser", "$dbpass")or die("cannot connect");
mysql_select_db("$dbname")or die("cannot select DB");


$id = @$_POST['id'];

// To protect MySQL injection (more detail about MySQL injection)
$id = stripslashes($id);
$id = mysql_real_escape_string($id);

$sql="Select * from table1 where ID='$id'";

$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $id and $mypassword, table row must be 1 row

if ($count == 1) {
     $message = array('status' => 'ok');
} 

header('Content-Type: application/json');
print '{"key":'. json_encode($message) .'}'; 
?>

したがって、JSONを次のように表示します。

{ "key": [ { "ID": "1", "NAME": "Test", "ADDRESS": "Test-street 123", "CONDITION": "false", "status": "ok" } ] }

では、これを実現するには、$ messageに何を追加する必要がありますか?

4

3 に答える 3

1

そこに連想配列がありません。

$message = array(array(
             "ID"        => "1",
             "NAME"      => "Test",
             "ADDRESS"   => "Test-street 123",
             "CONDITION" => "false",
             "status"    => "ok"
           ));
echo json_encode($message);
// [{"ID":"1","NAME":"Test","ADDRESS":"Test-street 123","CONDITION":"false","status":"ok"}]
于 2012-06-15T06:41:23.857 に答える
0

mysql_fetch_assoc を使用して mysql の結果を取得します。次のようになります:-

if ($count == 1) {
    $message = mysql_fetch_assoc($result);
    $message['status'] = 'ok';
    $message = array($message);
    print '{"key":'. json_encode($message) .'}';
}
于 2012-06-15T07:06:55.150 に答える
0

JSON でエンコードする前に、クエリの結果をフェッチする必要があります。例えば ​​:

$result=mysql_query($sql);
$message->key = array();
while( $row = $db->sql_fetchrow($result) ) {
    $message->key[] = $row; // or a specific dispatching of values in keys
}
于 2012-06-15T06:45:27.493 に答える