我对mysqli预处理语句和结果集的理解是它们都存储在服务器端,这意味着你一次只能有一个。当您尝试使用第一个查询的结果循环并执行第二个查询时,这很痛苦。
我的代码尝试读取第一个结果集,以便循环读取。
$sql = 'SELECT VISIT_ID, UPRN, VISIT_REF, VISIT_DATE, START_TIME, END_TIME, NOTES, REALNAME from V_PREVIOUS_VISITS where UPRN = ?';
/* Prepare statement */
$stmt = $db->prepare($sql);
if($stmt === false) {
trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $db->error, E_USER_ERROR);
}
$VisitArray = array();
$stmt->bind_param('i',$_GET['UPRN']);
$stmt->execute();
$result = $stmt->fetch();
while ($row = $result->fetch_assoc()){
$VisitArray[]= $row;
};
$stmt->free_result();
foreach($VisitArray as $Visititem){
?>
Visit Ref:<?=$Visititem['VISIT_REF']?><br/>
Visit Date:<?=$Visititem['VISIT_DATE']?><br/>
Conducted by:<?=$Visititem['REALNAME']?><br/>
Notes:<?=$Visititem['NOTES']?><br/>
Rates:<br/>
<?
}
?>
我现在对mysqli_stmt类和mysqli_result类感到困惑,以及我如何使用结果类中的数组方法来处理在语句类中调用的内容。 我很欣赏这归结于我对编码课程缺乏了解 - 抱歉。
答案 0 :(得分:0)
只是为了得到答案。
你可以试试get_result()。如果它不可用,你必须坚持那个丑陋的bind_result(),将它与get_result_metadata()和nd结合起来。 bind_result的手册页上有许多示例代码。