将多行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];
我最后的评论是,我会去你的当前选项(行排列,每排为包含的那些列),因为它更接近数据的真正代表方式。