JSON编码mysql查询

时间:2012-06-15 06:32:46

标签: php mysql json

我有一个执行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中添加什么来实现这个目标呢?

3 个答案:

答案 0 :(得分: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"}]

答案 1 :(得分: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
}

答案 2 :(得分:0)

使用mysql_fetch_assoc获取mysql结果,如下所示: -

if ($count == 1) {
    $message = mysql_fetch_assoc($result);
    $message['status'] = 'ok';
    $message = array($message);
    print '{"key":'. json_encode($message) .'}';
}
相关问题