我创建了以下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
答案 0 :(得分:1)
正如PHP Docs对函数mysqli_fetch_all()
所说,它需要PHP版本> = 5.3.0。检查你的
<强>更新强>
mysqlnd
驱动程序(参见相同的DOC页面)更新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);