Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果值为null,则不执行插入_Php_Jquery_Mysqli - Fatal编程技术网

Php 如果值为null,则不执行插入

Php 如果值为null,则不执行插入,php,jquery,mysqli,Php,Jquery,Mysqli,我试图在数据库中插入每个问题的每个答案。问题是一个问题可能没有答案,因此我尝试了下面的代码,但如果一个问题没有答案,它不会插入db行。我尝试的是,如果没有答案,则在该问题的答案列下显示字符串无答案: $answersql = "INSERT INTO Answer (QuestionId, Answer) VALUES (?, ?)"; if (!$insertanswer = $mysqli->prepare($answersql)) { // Handle erro

我试图在数据库中插入每个问题的每个答案。问题是一个问题可能没有答案,因此我尝试了下面的代码,但如果一个问题没有答案,它不会插入db行。我尝试的是,如果没有答案,则在该问题的
答案
列下显示字符串
无答案

 $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();

}
更新:

下面是为
答案
表格显示创建表格:

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设置为有答案
B
C
,并将问题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" } 
} 

你可以从你的var_转储中看出你有两个问题,但只有一组答案。据我所见,你的设计缺陷没有将问题的答案联系起来

$results中没有第二个索引,意味着没有第二组答案,因此没有插入


但是如果你有三个问题,两个答案集,那么这些答案属于问题1&2还是问题2&3,还是问题1&3。我看不出您是如何将问题id添加到结果集中的。

为什么不为空字段设置一个默认值,例如(empty field=Z)?是否应该允许这些值为空?如果是,请将这些字段中的数据库更改为“允许null”。如果不是,请在插入或删除之前检查空/空值update@thaJeztah该字段设置为允许NULL@NewBee如果我设置it@thaJeztah但它确实会在插入之前检查它,正如我在
execute()
之前所做的那样。哦,这就是我想的。如果一个问题没有答案,如果所有的问题都有答案,那么它就不会遗漏任何问题
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" } 
}