MySQL等效于pg_fetch_all()

时间:2015-07-22 10:49:46

标签: php mysql arrays json postgresql

我创建了以下PHP文件:

if (isset($_GET['review']))
    $query = "SELECT text, rating, date, member FROM reviews WHERE users = '" . mysqli_real_escape_string($link, $_GET['review']) . "'";
else if (isset($_GET['rating']))
    $query = "SELECT ROUND(avg_rating, 2) as avg, num_recensioni FROM avg_voti WHERE users = '" . mysqli_real_escape_string($link, $_GET['rating']) . "'";
else if (isset($_POST['usersId']))
    $query = "SELECT id, name, desc, addr FROM users WHERE id = '" . mysqli_real_escape_string($link, $_POST['usersId']) . "' ORDER BY name ASC";

$result = pg_query($link, $query);
$arr = pg_fetch_all($result);
echo json_encode($arr);

现在,由于我将数据库从Postegres更改为MySQL,我需要"转换"那段代码。所以我用这种方式改变了最后三行:

$result = mysqli_query($link, $query);
$arr = mysqli_fetch_all($result);
echo json_encode($arr);

mysqli_fetch_all()似乎未定义。我能用什么得到同样的pg_fetch_all()?提前致谢

编辑:我的PHP版本是5.4.39

2 个答案:

答案 0 :(得分:1)

正如PHP Docs对函数mysqli_fetch_all()所说,它需要PHP版本> = 5.3.0。检查你的

  

如何检查PHP版本:   http://php.net/manual/en/function.phpversion.php

<强>更新

  • 检查服务器中是否安装了mysqlnd驱动程序(参见相同的DOC页面)
  • 尝试使用mysqli_fetch_array()

更新2:

方法1:

  

如何使用mysqli_fetch_array()获取所有行:   mysql_fetch_array add all rows?

下一个代码是mysql函数,而不是mysqli,但如果更改函数名称,它将起作用

$rows = array();

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

方法2:

  

如何使用mysqli_fetch_assoc()获取所有行:   http://php.net/manual/en/function.mysql-fetch-array.php#87201

// Read records
$result = mysqli_query("SELECT * FROM table;") or die(mysql_error());
// Put them in array
for($i = 0; $array[$i] = mysqli_fetch_assoc($result); $i++) ;
// Delete last empty one
array_pop($array);

“您需要删除最后一个,因为它始终为空。 通过这种方式,您可以轻松地将整个表读取到数组并保留表列的键。非常方便。“

答案 1 :(得分:0)

以下是最终解决方案:

pg_fetch_all()使用(对于Postegres):

$result = mysqli_query($link, $query);
$arr = mysqli_fetch_all($result);
echo json_encode($arr);

相当于MySQL:

$result = mysqli_query($link, $query);
$rows = array();
while($r = mysqli_fetch_assoc($result)) {
    $rows[] = $r;
}
echo json_encode($rows);