Mysql获取所有行并以json形式回显

时间:2013-03-19 22:02:40

标签: php mysql json

我有一个包含5列和多行的数据库。我想获取前3行并将它们作为数组回显。到目前为止,我只能获得第一行(我是PHP和mysql的新手)。这是我到目前为止的PHP:

//==== FETCH DATA
$result = mysql_query("SELECT * FROM $tableName");
$array = mysql_fetch_row($result);    

//==== ECHO AS JSON
echo json_encode($array);

非常感谢帮助。

5 个答案:

答案 0 :(得分:12)

您需要遍历结果。 mysql_fetch_row一次获得一个。

http://php.net/manual/en/function.mysql-fetch-row.php

代码最终会像:

$jsonData = array();
while ($array = mysql_fetch_row($result)) {
    $jsonData[] = $array;
}
echo json_encode($jsonData);
//json_encode()

请注意 在PHP 5.5中不推荐使用mysql扩展,如您应该使用mysqli或PDO的注释中所述。您只需在上面的代码中替换mysqli_fetch_row即可。 http://www.php.net/manual/en/mysqli-result.fetch-row.php

答案 1 :(得分:2)

根据PHP Documentation mysql_fetch_row(除了它已被弃用,你应该使用mysqli或PDO)

  

返回与获取的行对应的数值数组,并将内部数据指针向前移动。

所以你需要一个while循环来获取所有行:

$rows = array();

while ($row = mysql_fetch_row($result)) {
    $rows[] = $row;
}

echo json_encode($rows);

我告诉你如何只获取3行:)

答案 2 :(得分:2)

我在使用PHP 5.5.7查询ODBC数据库连接时这样做,结果将采用JSON格式:

$conn = odbc_connect($odbc_name, 'user', 'pass');
$result = odbc_exec($conn, $sql_query);

获取允许编辑字段的结果:

while( $row = odbc_fetch_array($result) ) { 
     $json['field_1'] = $row['field_1'];
     $json['field_2'] = $row['field_2'];
     $json['field_3'] = $row['field_1'] + $row['field_2'];

     array_push($response, $json); 
  }

或者,如果我不想改变任何东西,我可以像这样简化:

while ($array = odbc_fetch_array($result)) { $response[] = $array; }

如果我想以JSON格式返回结果怎么办?,简单:

echo json_encode($response, true);

您可以更改mysqli_fetch_array的odbc_fetch_array以查询MySql数据库。

答案 3 :(得分:0)

你需要将它放在某种循环中,mysql_fetch_row一次返回一个结果。

参见示例: http://www.php.net/manual/en/mysqli-result.fetch-row.php#example-1794

答案 4 :(得分:-1)

$ result = mysql_query(“SELECT * FROM $ tableName ORDER BY id LIMIT 3”);

$ json = array(); while($ array = mysql_fetch_row($ result)){

$ json [] = $ array; }

echo json_encode($ json);