将多行SQL查询推送到单个PHP数组项目

问题描述:

我现在有一个脑屁。我从数据库中提取问题和可能的答案,以动态生成使用PHP和MySQL的测验。下面是输出我得到:将多行SQL查询推送到单个PHP数组项目

Response id: 3 Question id: 1 Question: What is my middle name? Title: How Well Do You Know Michael 
    Array (
     [0] => Array (
      [r_id] => 3 
      [question_id] => 1 
      [question] => What is my middle name? 
      [title] => How Well Do You Know Michael)) 
    Array (
     [0] => Array (
      [0] => 1 
      [1] => Abe) 
     [1] => Array (
      [0] => 2 
      [1] => Andrew) 
     [2] => Array (
      [0] => 3 
      [1] => Andre) 
     [3] => Array (
      [0] => 4 
      [1] => Anderson)) 

从这个PHP脚本:

// Grab the question data from the database to generate the form 
    $query = "SELECT qr.response_id AS r_id, qr.question_id, q.question, quiz.title " . 
     "FROM quiz_response AS qr " . 
     "INNER JOIN question AS q USING (question_id) " . 
     "INNER JOIN quiz USING (quiz_id) " . 
     "WHERE qr.user_id = '" . $_SESSION['user_id'] . "'"; 
    $data = mysqli_query($dbc, $query) or die("MySQL error: " . mysqli_error($dbc) . "<hr>\nQuery: $query"); 
    $questions = array(); 
    while ($row = mysqli_fetch_array($data, MYSQL_ASSOC)) { 
     echo 'Response id: ' . $row['r_id'] . 'Question id: ' . $row['question_id'] . ' Question: ' . $row['question'] . ' Title: ' . $row['title'] . '<br />'; 
     array_push($questions, $row); 
     // Pull up the choices for each question 
     $query2 = "SELECT choice_id, choice FROM question_choice " . 
     "WHERE question_id = '" . $row['question_id'] . "'"; 
     $data2 = mysqli_query($dbc, $query2); 
     $choices = array(); 
     while ($row2 = mysqli_fetch_array($data2, MYSQL_NUM)) 
      array_push($choices, $row2); 
    } 
    print_r($questions); 
    print_r($choices); 

不过,我会非常喜欢有$选择数组中只有一个项目,而不是4个独立的项目。例如,我想要的选择数组如下所示:

Array (
    [0] => Array (
     [0] => 1 
     [1] => Abe 
     [2] => 2 
     [3] => Andrew 
     [4] => 3 
     [5] => Andre 
     [6] => 4 
     [7] => Anderson) 

我的问题:**虽然我已经从'

while ($row2 = mysqli_fetch_array($data2, MYSQL_NUM)) 
      array_push($choices, $row2); 

四个独立的行`反正是有?将它们全部推到数组$选择的同一项目**

替换此:

array_push($choices, $row2); 

随着

$choices[0][] = $row2[0]; 
$choices[0][] = $row2[1]; 

无论如何,我认为没有数组中的1个元素的数组会更有用。你为什么不这样做?

$choices[] = $row2[0]; 
$choices[] = $row2[1]; 

我最后的评论是,我会去你的当前选项(行排列,每排为包含的那些列),因为它更接近数据的真正代表方式。