一尘不染

在mysqli中存储和遍历查询结果

sql

这是我在phpi中使用mysqli面向对象样式的简单查询:

$query = "SELECT name FROM usertable WHERE id = ?";
$stmt = $mysqli->prepare($query);
$stmt->bind_param('i', $id);
$id= $_GET['id'];
$stmt->execute();
$stmt->bind_result($name);

while($stmt->fetch()){
   echo $name." ";
}

$stmt->free_result();
$stmt->close();

这很好。我获得了从select语句检索的名称列表。

现在,在一段时间内,我想将该$name变量用作另一个查询的参数,但是mysqli不允许这样做,因为我必须关闭第一个查询,然后调用第二个查询。

因此,我认为我必须存储第一个查询的结果,然后遍历结果以调用新查询。

我尝试了以下方法:

$query = "SELECT name FROM usertable WHERE id = ?";
$stmt = $mysqli->prepare($query);
$stmt->bind_param('i', $id);
$id= $_GET['id'];
$stmt->execute();
//$stmt->bind_result($name);
$result = $stmt->store_result();
$stmt->free_result();
$stmt->close();

while ($row = $result->fetch_row()) 
{
    echo $row[0]." ";
}

但这是行不通的。永远不会到达while内的代码。

注意 :我想避免使用multi_query()


阅读 168

收藏
2021-03-10

共1个答案

一尘不染

我已经解决了这个问题:

$query = "SELECT name FROM usertable WHERE id = ?";
$stmt = $mysqli->prepare($query);
$stmt->bind_param('i', $id);
$id= $_GET['id'];
$stmt->execute();
$result = $stmt->get_result();
$stmt->free_result();
$stmt->close();

while ($row = $result->fetch_array(MYSQLI_NUM)) 
{
    echo $row[0]." ";
}

只需使用get_result()fetch_array()

2021-03-10