我创建了以下 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
最佳答案
作为PHP Docs对于函数 mysqli_fetch_all()
来说,它需要 PHP 版本 >= 5.3.0。检查你的
HOW TO check PHP version: http://php.net/manual/en/function.phpversion.php
更新:
- 检查您的服务器中是否安装了
mysqlnd
驱动程序(请参阅相同的文档页面) - 尝试使用 mysqli_fetch_array()
更新2:
方法 1:
HOW TO use
mysqli_fetch_array()
to fetch all rows: mysql_fetch_array add all rows?
下一个代码是mysql
函数而不是mysqli
,但如果你更改函数名称它就会工作
$rows = array();
while(($row = mysql_fetch_array($result))) {
$rows[] = $row;
}
<小时/>
方法 2:
HOW TO use
mysqli_fetch_assoc()
to fetch all rows: 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);
“您需要删除最后一个,因为它始终为空。 通过这种方式,您可以轻松地将整个表读取到数组中并保留表列的键。非常方便。”
关于php - MySQL 相当于 pg_fetch_all(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31560999/