美好的一天大家!解決方法嵌套while - >獲取
目前我正在嘗試爲我的問題找到解決方法。就我而言,MySqli不支持嵌套的fetch'es,因此我的功能不太適用。我試圖找到解決辦法,但沒有運氣。我現在的代碼:
function viewQuestionnaire($id){
$questionStmt = $this->connection->prepare("SELECT id, type, name FROM TAP_questions WHERE questionnaire_id=?;");
$questionStmt->bind_param("i", $id);
$questionStmt->bind_result($id, $type, $name);
$questionStmt->execute();
$result = array();
while ($questionStmt->fetch()) {
$questions = new StdClass();
$questions->question_id = $id;
$questions->question_type = $type;
$questions->question_options = array();
$questions->question_name = $name;
if($questions->question_type=="2"){
$stmtOptions= $this->connection->prepare("SELECT id, options FROM TAP_options WHERE question_id=?;");
$stmtOptions->bind_param("i", $id);
$stmtOptions->bind_result($qu_id, $qu_opt);
$stmtOptions->execute();
while ($stmtOptions->fetch()) {
$options = new StdClass();
$options->option_id = $qu_id;
$options->option_name = $qu_opt;
array_push($questions->question_options, $options);
}
$stmtOptions->close();
}
array_push($result, $questions);
}
$questionStmt->close();
return $result;
}
正如你所看到的,我試圖從數據庫中獲取值,具體取決於問題類型。如果問題類型是「2」,我需要從另一個表中獲取「附加」值。我怎麼做?
弗拉德
做(嵌套)提取沒有限制。 – hakre
你不能有兩個同時的查詢,因爲默認情況下mysqli使用非緩衝查詢(對於準備好的語句;這與vanilla mysql_query相反)。 –
但你可以告訴使用緩衝查詢,這應該是可控制的。 – hakre