我有一个执行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中添加什么来实现这个目标呢?
答案 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) .'}';
}