当前位置: 首页 > 面试题库 >

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

袁法
2023-03-14
问题内容

这是我在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()


问题答案:

我已经解决了这个问题:

$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()



 类似资料:
  • 问题内容: 如何在常规SQL查询中结合执行存储过程以及使用其结果或参数? 例如,我想执行以下操作: 等等。 问题答案: 不,您需要使用临时表 那你就可以加入 如果您不知道该过程的列和数据类型,则可以使用以下出色答案:将存储过程的结果插入临时表中 简而言之,它用于将存储过程执行到动态创建的#temp表中,而无需命名和了解所有列的类型。

  • 我正在制作一个php注册脚本,注册工作正常,所有内容都已成功输入数据库,激活电子邮件工作正常,但每当我使用mysqli查询来选择或更新信息时,它都不起作用。 例如,当我使用我知道数据库中存在的帐户登录时,它告诉我用户名不存在,当单击电子邮件中的激活链接时,查询无法以相同的方式更新数据库。 我相信这是一个非常简单的错误,我忽略了我的新手,但我找了几个小时后找不到合适的答案。我真的不确定问题出在哪里。

  • 问题内容: 我有一张基本上看起来像这样的表: 其中redirectid是另一行的ID。基本上,如果选择了一行,并且该行具有一个redirectid,则应该在该位置使用redirectid数据。可能有多个重定向,直到redirectid为NULL为止。本质上,这些重定向在表中形成一个链接列表。我想知道的是,给定一个ID,是否可以设置一个将遍历所有可能的重定向并在“列表”末尾返回ID的sql查询? 这

  • 如何将查询结果保存在字符串数组中 查询很简单,只有一列,即: 我想要的是将id存储在String数组中,这样我就可以将它们显示为列表视图中的可点击项。

  • 问题内容: 我正在尝试找到一种方法来缓存不会随频率变化的查询结果。例如,来自电子商务的产品类别(手机,电视等)。我正在考虑使用模板片段缓存,但是在这个片段中,我将遍历这些类别的列表。该列表在网站的任何部分都可用,因此在我的文件中。渲染模板时是否总是要发送类别列表?还是有更动态的方法来执行此操作,以使列表始终在模板中可用? 问题答案: 将缓存的查询弹出到Django的缓存中: 然后创建一个上下文处理