将mysqli预处理语句读入数组

时间:2013-07-19 18:55:54

标签: arrays mysqli fetch

我对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类感到困惑,以及我如何使用结果类中的数组方法来处理在语句类中调用的内容。 我很欣赏这归结于我对编码课程缺乏了解 - 抱歉。

1 个答案:

答案 0 :(得分:0)

只是为了得到答案。

你可以试试get_result()。如果它不可用,你必须坚持那个丑陋的bind_result(),将它与get_result_metadata()和nd结合起来。 bind_result的手册页上有许多示例代码。