【问题标题】:MySQL equivalent for pg_fetch_all()MySQL 等效于 pg_fetch_all()
【发布时间】:2015-10-12 04:51:43
【问题描述】:

我创建了以下 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 mysql arrays json postgresql


    【解决方案1】:

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

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

    更新:

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

    更新 2:

    方法一:

    如何使用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);
    

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

    【讨论】:

    • 我的PHP版本是5.4.39
    • 关于mysqlnd 我在共享主机上,所以我无法安装它。 mysqli_fetch_array() 适用于单行,在我的情况下如何使用它来替换 mysqli_fetch_all()
    【解决方案2】:

    这是最终的解决方案:

    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);
    

    【讨论】:

      猜你喜欢
      • 2012-11-11
      • 2017-01-02
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多