这是我在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不允许这样做,因为我必须关闭第一个查询,然后调用第二个查询。
$name
因此,我认为我必须存储第一个查询的结果,然后遍历结果以调用新查询。
我尝试了以下方法:
$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()。
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()
get_result()
fetch_array()