【问题标题】:PDO PHP Array issuePDO PHP数组问题
【发布时间】:2017-04-17 00:36:43
【问题描述】:
function chkQuestions($info)
    {
        $query = $this->handle->prepare("SELECT * FROM tbltest");
        $query->execute();
        $rows = $query->fetchAll();
        $getPost = $query->rowCount();  

        foreach($rows as $row) {
            for($i = 1; $i <= $getPost; $i++) {
                $answerID[$i] = array($info['answer'.$i]);
                $lo = array($answerID);
            }

            foreach($answerID as $question) {
                if(array_key_exists($row['answer'],$question)) {
                    $test = "found";
                    return $test;
                } else {
                    return $question;
                }
            }                           
        }   
    }//chkQuestions

以上是我的函数,一切正常,但是当我将数据库中名为 answer 的行与数组进行比较时,它不起作用?

我尝试在值中进行硬编码,它可以正常工作,但不适用于数组。

我查看了数组的值,该值确实存在。

在逻辑$answerID[$i] = array($info['answer'.$i]); = option1 中,如果数组值option1 = 设置为option1 的数据库行答案,则返回找到,但它告诉我找不到它。

array(1)
    {
        [0]=> string(7) "option1"
    }

上面是数组$questiondum_var。有什么帮助吗?

foreach($questions as $question)
            {
            ?>
            <h3><?php echo $question['question'] ?></h3>

            <div class = "col-xs-12">

            <input type="radio" name="answer<?php echo $question['testID'] ?>" id="answer<?php echo $question['testID'] ?>" value="<?php echo $question['option1']?>" />

            <label for="question-1-answers-A">A)<?php echo $question['option1'] ?> </label>

            </div>

            <div class = "col-xs-12">

            <input type="radio" name="answer<?php echo $question['testID'] ?>" id="answer<?php echo $question['testID'] ?>" value="<?php echo $question['option2']?>" />

            <label for="question-1-answers-B">B)<?php echo $question['option2'] ?></label>

            </div>

            <div class = "col-xs-12">

            <input type="radio" name="answer<?php echo $question['testID'] ?>" id="answer<?php echo $question['testID'] ?>" value="<?php echo $question['option3']?>" />

            <label for="question-1-answers-C">C)<?php echo $question['option3'] ?></label>

            </div>

            <div class = "col-xs-12">

            <input type="radio" name="answer<?php echo $question['testID'] ?>" id="answer<?php echo $question['testID'] ?>" value="<?php echo $question['option4']?>" />

            <label for="question-1-answers-D">D)<?php echo $question['option4'] ?></label>
            <br>
            <br>


            </div>


            <?php
            }
                echo "<input type='hidden' name='subaction' id='subaction' value='chkQuestion'> <button class='btn btn-primary' name='submit' type='submit'>Submit</button> </form>";

        }
        else
            echo "No Quiz Found </form>";










    ?>   
   </div>    

【问题讨论】:

  • 我会帮你的。有几点我觉得需要改正。让我们从澄清结果集开始。您正在选择*。您是否仅使用表中 answer 列中的值?如果是这样,请在您的查询中按字面意思命名它。我有后续问题,但我会等到您就第一点做出回应后再向您提出更多问题。
  • 实际上,您应该先修复之前问题中的表单字段命名问题,然后再进行此问题所需的所有修复。请更新此问题以反映此处所做的更改。
  • 您好,我已经修复了在数据库中寻找答案的语句。并且所有之前的问题都已排序,所有表单信息都到达此功能
  • 所以我们使用"SELECT answer FROM tbltest" 作为查询?什么是handle-&gt;,只是连接吗?下一个问题是,为什么要使用fetchAll()?这将返回两个带有键的重复元素:0answer 用于每一行。 fetch(PDO::FETCH_NUM) 会更好吗?您的嵌套循环非常令人担忧;整个部分都需要仔细检查。
  • 您似乎没有在查询中使用任何 ORDER BY 子句。您绝对确定您的结果集将按照您的$info['answer'] 数组的排序顺序出现吗?

标签: php arrays pdo


【解决方案1】:

我对自己的回答没有多大信心,因为你的编码方法很好地让我感到困惑。但是,我觉得我需要在页面上获得一些东西,以便我们有一些坚实的基础可以工作:

function chkQuestions($info){
    $check=array(); // this will hold the results to return
    $stmt=$this->handle->prepare("SELECT `testID`,`answer` FROM tbltest");
    $stmt->execute(); 
    while($row=$stmt->fetch(PDO::FETCH_ASSOC)){
        if($info['answer'][$row['testID']]==$row['answer']){
            $check[$row['testID']]="correct";
        }else{
            $check[$row['testID']]="incorrect";
        }
    }
    return $check;  // handle this however you like on your main page
}

【讨论】:

  • @SeafightBlackPearl21 看看你是否能让这个干净的代码块为你工作。如果没有,请告诉我什么没有按预期工作或您不理解什么。
  • 嘿,我现在试一试 =-)
  • 注意:未定义的索引:C:\xampp\htdocs\ProgramLearnWeb\model\html.model.php 中第 43 行 array(1) { [1]=> string(9) 中的答案“不正确" } 是我现在正在查看的响应,以查看最新消息
  • 如果我能看到$info$row 的一些示例数据,这将对我有所帮助。 (在您的问题中最好通过编辑)
  • 好吧,我把它改成了 if($info['answer'.$row['testID']]==$row['answer']){
猜你喜欢
  • 1970-01-01
  • 2011-02-10
  • 2017-05-18
  • 2012-07-09
  • 2016-05-19
  • 2011-09-20
  • 2011-09-11
  • 2012-07-31
相关资源
最近更新 更多