如果为null值,则不会执行插入操作

时间:2013-02-04 18:29:36

标签: php jquery mysqli

我正在尝试为数据库中的每个问题插入每个答案。问题是有可能一个问题可能没有答案,所以我尝试了下面的代码,但是如果一个问题没有答案就不插入数据库行,我试图做的是如果没有答案那么显示针对该问题的No Answer列下的字符串Answer

 $answersql = "INSERT INTO Answer (QuestionId, Answer) 
    VALUES (?, ?)";
if (!$insertanswer = $mysqli->prepare($answersql)) {
    // Handle errors with prepare operation here
    echo __LINE__.': '.$mysqli->error;
}

if( $insert && $insertanswer)
{

    $c = count($_POST['numQuestion']);
    $question_ids = array();

    for($i = 0;  $i < $c; $i++ )
    {

... //Question INSERT goes here

        $questionId = $mysqli->insert_id;

            $question_ids[$questionNo] = $questionId;

}

        $results = $_POST['value'];
        foreach($results as $id => $value) 
        {
            $answer = $value;

            $quesid = (int)$question_ids[$id];   

            foreach($value as $answer) 
            {

            if($answer == '' || $answer === null){
                $answer = 'No Answer';
            }

                $insertanswer->bind_param("is", $quesid, $answer);

                $insertanswer->execute();

                if ($insertanswer->errno) {
                    // Handle query error here
                    echo __LINE__.': '.$insertanswer->error;
                    break 7;
                }
            }
        }


    //close your statements at the end


    $insertanswer->close();

}

['value']来自输入:

var $newBtn = $(("<input class='answerBtnsRow answers' type='button' style='display:%s;' onclick='btnclick(this, " + gQuestionIndex + ");' />").replace('%s', $this.is(':visible') ? 'inline-block' : 'none')).attr('name', "value[" + gQuestionIndex + "][]").attr('value', $this.val()).attr('class', $this.attr('class')).attr('id', $this.attr('id') + 'Row');

更新:

以下是Answer表的

CREATE TABLE `Answer` (
 `AnswerId` int(10) NOT NULL AUTO_INCREMENT,
 `QuestionId` int(10) NOT NULL,
 `Answer` varchar(10) DEFAULT NULL,
 PRIMARY KEY (`AnswerId`)
) ENGINE=InnoDB AUTO_INCREMENT=280 DEFAULT CHARSET=utf8

下面是一个var转储,如果我将问题1设置为答案BC并将问题2设置为根本没有答案,则会输出以下内容:

var_dump($question_ids);
    var_dump($results);

 array(2) { 
[1]=> int(247) 
[2]=> int(248) 
} 
array(1) { 
[1]=> array(2) { 
[0]=> string(1) "B" 
[1]=> string(1) "C" } 
} 

1 个答案:

答案 0 :(得分:0)

您可以从var_dump中了解到您有两个问题,但只有一组答案。从我所看到的,你的设计缺陷并没有将问题的答案联系起来。

$ result中没有第二个索引,表示没有第二组答案,因此没有插入......

但如果您有三个问题和两个答案集,那么这些答案是否属于问题1&amp; 2或2&amp; 3或1&amp; 3。我不知道你是如何将你的问题id加到结果集上的。