3

我有一个包含 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);

帮助将不胜感激。

4

5 回答 5

13

您需要遍历结果。 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()

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

于 2013-03-19T22:08:02.963 回答
2

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

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

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

$rows = array();

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

echo json_encode($rows);

我把它留给你如何只获取 3 行:)

于 2013-03-19T22:11:24.403 回答
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);

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

于 2014-07-23T18:06:02.007 回答
0

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

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

于 2013-03-19T22:07:29.340 回答
-1

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

$json = 数组();而($array = mysql_fetch_row($result)){

$json[] = $数组;}

回声 json_encode($json);

于 2017-12-31T14:46:51.987 回答