(PHP)如何在使用预准备语句时返回常规MySQL结果资源?

时间:2014-01-27 06:28:30

标签: php mysqli

这是一个无知的初学者类型的问题,所以我道歉。但是我没有设法找到一个网站或视频来帮助我理解使用MySQL编写的语句,所以我希望得到一些直接的建议。

在我学习的最后几周,我一直在使用程序化MySQLi调用来进行数据库查询,并使用while循环进行处理。像

这样的事情
$query = mysqli_query("SELECT * FROM `Shoes` WHERE `Color` = 'Red'");
while ($row = mysqli_fetch_assoc($query)) {
    echo $row['size'];
}

这样的事情。我有意义的是,我将执行一个查询,返回一个特殊的结果资源,然后使用'fetch_something'函数将其转换为一个我可以从中选择并循环的数组,无论其大小如何。

现在我正在努力学习准备好的陈述。什么让我感到震惊的是'bind_result'功能似乎一直被使用,至少在我迄今为止咨询的每本书和教程中都是如此。它告诉我每列提供一个变量,该列的结果将被绑定到该变量。像

$db = new mysqli(server,user,pass,database);
$stmt = $db->prepare("select `Temperature` from `BuildingDetails` where `HouseNumber` = ?");
$stmt->bind_param("i",$_GET['num']);
$stmt->execute();
$stmt->bind_result($x);
$stmt->fetch();
echo "The temperature in this house is {$x}.";

当我检索单个值或单行时足够简单。但是如果我想循环一个包含20列和5,000行的表呢?有没有办法可以返回常规的旧MySQL结果资源并使用fetch_assoc或其他东西?

1 个答案:

答案 0 :(得分:0)

  

有没有办法可以返回常规的旧MySQL结果资源并使用fetch_assoc或其他内容?

您可以使用mysqli_stmt_get_result

<强>程序

    $result = mysqli_stmt_get_result($stmt);
    while ($row = mysqli_fetch_assoc($result))
    {
       print_r($row);
    }

<强> OOP

    $result = $stmt->get_result();
    while ($row = $result->fetch_assoc())
    {
      print_r($row);
    }

这样您就不必绑定所有变量来获得结果。