2012-06-15 3 views
0

У меня есть сценарий, который выполняет запрос mysql, и если есть строки, он кодирует сообщение. Но я хочу, чтобы он кодировал сообщение и весь результат запроса. Это код я использую:JSON encode mysql query

<?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" } ] }

Так что я хотел бы добавить к $ сообщения для достижения этой цели?

+1

Вы ничего не делать с результатом, кроме извлечения числа выбранных строк. – Gumbo

ответ

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

Я хочу, чтобы JSON отображал данные из запроса mysql + status => «ok». Если я так делаю это, это не означает, что каждое $ сообщение будет выглядеть точно так же? – user1423276

+0

@ user1423276, нет схемы базы данных – Alexander

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 
} 
0

Fetch MySQL результат с помощью mysql_fetch_assoc, Somthing так: -

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