2

mysqli の準備済みステートメントと結果セットについての私の理解では、それらはすべてサーバー側に保存されているということです。つまり、一度に使用できるのは 1 つだけです。これは、最初のクエリの結果を使用してループを実行し、2 番目のクエリを実行しようとする場合に厄介です。

私のコードは最初の結果セットを読み取ろうとしたため、ループして読み取ることができます。

$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 クラスの間で混乱しており、ステートメント クラスで呼び出されたものに対して結果クラスの配列メソッドを使用する方法について混乱しています。これは、コーディングのクラスに関する知識が不足しているためです。申し訳ありません。

4

1 に答える 1