Php 如何从这个脚本中获得1个问题和4个答案?

Php 如何从这个脚本中获得1个问题和4个答案?,php,mysqli,Php,Mysqli,我正在Unity上创建一个webGL游戏,但我想先更正我的php 我有两张表格,包括问题和答案。每个问题都有4个可能的答案,需要从我的数据库中提取这些答案。 答案表通过questionId与问题表匹配 问题: 我最好使用表联接还是将它们分开 我是否应该只针对问题表使用select语句,然后使用 加入表格以获取答案并单独提交 我应该创造什么 有4列不同答案的答案表 当前代码: 这是我的桌子: CREATE TABLE `braingain`.`questionTable` ( `ques

我正在Unity上创建一个webGL游戏,但我想先更正我的php

我有两张表格,包括问题和答案。每个问题都有4个可能的答案,需要从我的数据库中提取这些答案。 答案表通过
questionId
与问题表匹配

问题:

  • 我最好使用表联接还是将它们分开
  • 我是否应该只针对问题表使用select语句,然后使用 加入表格以获取答案并单独提交
  • 我应该创造什么 有4列不同答案的答案表
当前代码:


这是我的桌子:

CREATE TABLE `braingain`.`questionTable`
 ( `questionId` INT NOT NULL AUTO_INCREMENT , `question` VARCHAR(600) NOT NULL , `scoreValue` INT NOT NULL , `subject` VARCHAR(50) NOT NULL , PRIMARY KEY (`questionId`));

CREATE TABLE `braingain`.`answerTable`
 ( `answerId` INT NOT NULL  , `answer` VARCHAR(600) NOT NULL , 'questionId', isCorrect;
查询应将问题和4个相关答案拉入一个数组

期望的结果

创建的阵列应如下所示:

|         question               | answerA | answerB | answerC | answerD |
| WHICH IS THE CORRECT SPELLING? | APPLE   | APEL    | APPUL   | APPAL   |

运行两个嵌套查询

$output = array();
$answer_array = array('answerA','answerB','answerC','answerD');
$query = ("select * from questiontable ORDER BY RAND () LIMIT 1 ");
$result =mysqli_query($conn, $query) or die(mysqli_error($conn));

while ($row = mysqli_fetch_assoc($result)){
    $row_cnt = mysqli_num_rows($result);
    $output['question']=$row['question'];
    $query2 = ("select * from answerTable where questionId = ". $row ['questionId'] order by answerId);
    $result2 =mysqli_query($conn, $query2) or die(mysqli_error($conn));
    $i=0;
    while ($row2 = mysqli_fetch_assoc($result2)){
        $output[answer_array[$i]]=$row2['answer'];
        $i++;
    }
}
print_r($output);
?>

请看一看缩进,使代码更容易理解:)


好的,我的php等都可以使用。我让它根据我的需要回显结果,这是代码

 <?php
    session_start();
    include 'dbconnect.php';

    $output = array();

    $answer_array = array('answerA','answerB','answerC','answerD'); //loads answers into array

    $query = ("select * from questiontable ORDER BY RAND () LIMIT 1 ");//sql query to get questions
    $result =mysqli_query($conn, $query) or die(mysqli_error($conn));

while ($row = mysqli_fetch_assoc($result)){
        $row_cnt = mysqli_num_rows($result);
        $output['question']=$row['question'];
        $query2 = ("select * from answerTable where questionId = '". ($row ['questionId'])."' order by rand()");//sql query to get answers for questions by questionId 
        $result2 =mysqli_query($conn, $query2) or die(mysqli_error($conn));
        $i=0;
        $question=$row ['question'];
        while ($row2 = mysqli_fetch_assoc($result2)){
        $output[$answer_array[$i]]=$row2['answer'];
        $i++;
        $_POST = $output;
        }
                                          }
echo "</br> ";                                    
echo $_POST ['question'];
echo "</br> ";
echo $_POST['answerA'];
echo "</br>";
echo $_POST['answerB'];
echo "</br>";
echo $_POST['answerC'];
echo "</br> ";
echo $_POST['answerD'];
?>
私有IEnumerator qNaget(WWW questionURL) {


}

您的第二个
创建表
语句不是有效的SQL代码。关于你的问题:视情况而定。如果您需要一个“事务”中的数据(如上面的代码),我将使用连接。在大多数情况下,您不想让答案在HTML代码中的某个地方可见,您只会在前端显示问题(并且只加载它而不加入答案),并加载答案作为后端验证的一部分。(1.)我应该更好地使用表联接还是将它们分开?*通常,从联接表进行查询更快。(2.)我应该为不同的答案创建包含4列的答案表吗?*如果你希望每个问题都有固定数量的答案,你可以把答案和问题放在同一张表中。但是,如果您预见到每个问题的答案数量可能不同,请使用一个单独的答案表。新表每行将有一个答案选项。因此,问题表将与答案表有一对多的关系。但是,如果你预见到每个问题的答案数量可能不同。。。在程序员manThanks peeps中将问题和答案分开时,分析数据也会容易得多。我一回到答案数组就尝试这个方法,将它们放入一个变量,比如,$answer\u array=array('answerA','answerB','answerC','answerD')$answerA_text=‘answerA’;答案A、答案B等是包含答案文本的输出数组的索引,一个索引是包含问题文本作为所需输出数组的问题。干杯!这是一种享受。我现在只需要弄清楚如何将结果显示到unity中的相关UI区域中!伟大的将此标记为答案:游戏框架中的D统一?这是现在的结果。。。数组([问题]=>9x4是什么?[回答A]=>16[回答B]=>360[回答C]=>32[回答]=>36)为什么要打印单词“数组”?
 <?php
    session_start();
    include 'dbconnect.php';

    $output = array();

    $answer_array = array('answerA','answerB','answerC','answerD'); //loads answers into array

    $query = ("select * from questiontable ORDER BY RAND () LIMIT 1 ");//sql query to get questions
    $result =mysqli_query($conn, $query) or die(mysqli_error($conn));

while ($row = mysqli_fetch_assoc($result)){
        $row_cnt = mysqli_num_rows($result);
        $output['question']=$row['question'];
        $query2 = ("select * from answerTable where questionId = '". ($row ['questionId'])."' order by rand()");//sql query to get answers for questions by questionId 
        $result2 =mysqli_query($conn, $query2) or die(mysqli_error($conn));
        $i=0;
        $question=$row ['question'];
        while ($row2 = mysqli_fetch_assoc($result2)){
        $output[$answer_array[$i]]=$row2['answer'];
        $i++;
        $_POST = $output;
        }
                                          }
echo "</br> ";                                    
echo $_POST ['question'];
echo "</br> ";
echo $_POST['answerA'];
echo "</br>";
echo $_POST['answerB'];
echo "</br>";
echo $_POST['answerC'];
echo "</br> ";
echo $_POST['answerD'];
?>
public class qNaDisplay : MonoBehaviour {
public Text questionDisplayText, answerAText, answerBText, answerCText, answerDText;
public Text questMessage, answerMessage;

private string question, a, b, c, d;


// Use this for initialization
void Start ()
{
    WWW questionURL = new WWW("http://localhost:8080/Project/PHP/questionRequest.php");
    question = questionDisplayText.text;
    a = answerAText.text;
    b = answerBText.text;
    c = answerCText.text;
    d = answerDText.text;
    StartCoroutine(qNaget(questionURL));
}

// Update is called once per frame
void Update () {

}
    yield return  questionURL;
    Debug.Log(questionURL.text);
    if (questionURL.error != null)
    {
        print("There was an error getting the question " + questionURL.error);
    }
    else
    {
         Debug.Log (questionURL.text); // this is a GUIText that will display the scores in game.
    }
}