【发布时间】:2013-12-24 05:57:55
【问题描述】:
这是我在 php 中的简单查询,使用 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()。
【问题讨论】:
-
打开另一个数据库连接并在while循环中使用该连接进行查询
-
@Linger,如果使用单例模式获取连接变量怎么办?
-
听起来您应该简单地使用 JOIN 通过一个查询来查询所有数据。
-
@Mike 第二个查询可能是 INSERT 或 UPDATE,或某种组合。可能我可以加入所有查询,但为什么我不能遍历第一个查询的结果?
-
@Joseph82,您应该能够打开到同一个数据库的两个不同连接。将一个连接用于初始查询,在 while 内执行语句时使用另一个连接。试试看它是否有效。