Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.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/2/jquery/78.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 它不是将数据插入数据库_Php_Jquery_Html_Mysqli - Fatal编程技术网

Php 它不是将数据插入数据库

Php 它不是将数据插入数据库,php,jquery,html,mysqli,Php,Jquery,Html,Mysqli,我想将数据插入Image\u Question表中。但它不会在Image\u Question表中执行插入操作 我有两个错误: 注意:未定义的偏移量:0英寸。。。在线305 注意:未定义的偏移量:3英寸。。。在线305 以下是您可以使用的应用程序: 要使用应用程序查看正在发生的情况,请执行以下操作: 单击两次添加问题按钮以附加两个文件输入 现在一次上传一个文件,但要这样做。上传第1行文件输入中的文件,然后上传第2行文件,然后再次上传第1行文件,最后上传第2行文件 下面是mysqli代码: /

我想将数据插入
Image\u Question
表中。但它不会在
Image\u Question
表中执行插入操作

我有两个错误:

  • 注意:未定义的偏移量:0英寸。。。在线305
  • 注意:未定义的偏移量:3英寸。。。在线305
以下是您可以使用的应用程序:

要使用应用程序查看正在发生的情况,请执行以下操作:

  • 单击两次添加问题按钮以附加两个文件输入

  • 现在一次上传一个文件,但要这样做。上传第1行文件输入中的文件,然后上传第2行文件,然后再次上传第1行文件,最后上传第2行文件

  • 下面是mysqli代码:

    // Prepare your statements ahead of time
    $questionsql = "INSERT INTO Question (QuestionNo) VALUES (?)";
    if (!$insert = $mysqli->prepare($questionsql)) {
      // Handle errors with prepare operation here
      echo __LINE__.': '.$mysqli->error;
    }
    
    $imagequestionsql = "INSERT INTO Image_Question (ImageId, QuestionId)  
    VALUES (?, ?)"; 
    
    if (!$insertimagequestion = $mysqli->prepare($imagequestionsql)) { 
      // Handle errors with prepare operation here 
     echo __LINE__.': '.$mysqli->error; 
    }
    
    //make sure both prepared statements succeeded before proceeding
    if( $insert && $insertimagequestion) {
      $c = count($_POST['numQuestion']);
      $question_ids = array();
    
      for($i = 0;  $i < $c; $i++ ) {
        $questionNo = $_POST['numQuestion'][$i];
    
        $insert->bind_param("i", $questionNo);
    
        $insert->execute();
    
        if ($insert->errno) {
            // Handle query error here
          echo __LINE__.': '.$insert->error;
          break 1;
        }
    
        $questionId = $mysqli->insert_id;
    
        $question_ids[$questionNo] = $questionId;
      }
    
      $imgresults = $_POST['imgid'];
      foreach($imgresults as $imgid => $imgvalue) { 
        $image = $imgvalue;
        $imgquesid = $question_ids[$imgid];  //LINE 305 where error is
    
        foreach($imgvalue as $image) {
          $insertimagequestion->bind_param("ii",$image, $imgquesid); 
          $insertimagequestion->execute();
    
          if ($insertimagequestion->errno) { 
            // Handle query error here
            echo __LINE__.': '.$insertimagequestion->error;
            break 2;
          }
        }
      }
      $insertimagequestion->close(); 
      $insert->close();
    }
    
    ?>
    
    我得到以下结果:

         array(2) { 
            [1]=> int(159)
            [2]=> int(160) 
            } 
    array(2) { 
    [0]=> string(3) "129"
    [1]=> string(3) "130" 
    }
    
    奇怪的是,imgresult的数字从0开始,然后是1,我也不知道它为什么要声明字符串,它应该是一个int。但是,如果它来自一个输入,我会调用bind_参数
    I
    还是
    s
    ,就像在db中调用int一样

    额外详细信息:

    我没有得到的是在这个mysqli下面,我为答案生成了一个类似的mysqli,奇怪的是,它正确地进行了插入,即使它以0开头,就像上面的图片_问题插入:

    $results = $_POST['value'];
    foreach($results as $id => $value) 
    {
        $answer = $value;
    
        $quesid = $question_ids[$id];   
    
        foreach($value as $answer) 
        {
            $insertanswer->bind_param("is", $quesid, $answer);
    
            $insertanswer->execute();
    
            if ($insertanswer->errno) {
                // Handle query error here
                echo __LINE__.': '.$insertanswer->error;
                break 5;
            }
        }
    }
    
    var_dump($result)与之前的var dump一起显示1个问题:

    array(1) { //var_dump($question_ids);
    [1]=> int(171) 
    } array(1) { //var_dump($imgresults);
    [0]=> string(3) "130" 
    } array(1) { 
    [1]=> array(1) { //var_dump($results);
    [0]=> string(1) "B" } } 
    

    我的答案不是关于某个问题,而是关于更广泛的话题

    这与你的工作方式有关。
    您需要更改它。
    听着,你所有的问题都是有待回答的。而且变得更大。但得到的答案却更少。
    它让你做绝望的事情——在问题、奖金、账目上作弊——但都是徒劳的。 这是一条无路可走的路

    你需要改变你学习东西的方式和使用这个伟大网站的方式。
    对任何人来说,了解他们使用的工具都是非常重要的。您必须自己编写代码,只有在遇到实际问题时才寻求帮助。
    因此,您将理解您的代码。这对于理解代码的功能至关重要。每一行。因此,您将能够自己解决问题并修复代码。
    否则,你们注定要为每一个打字错误寻求帮助,就像在这个例子中一样

    此外,由于你无法找到问题的根源,你必须在问题的同时发布大量代码,这使得答案变得复杂。
    在你的问题中有三个不同的领域:JavaScript、PHP和Mysql。而问题只属于其中一个。你必须学会将你的问题至少分离到这些领域的极限。
    是JS从客户端发送错误(意外)数据吗?好的,把所有的PHP和Mysql代码放在一边,只留下JS。它将帮助Stackoverflowers甚至您自己调查问题。
    这些数据可以吗?你确定吗?打印出来,确保它完全符合您的期望。
    如果没有问题,请转到PHP部分(,但不要忘记从问题中删除所有JS)。
    等等

    询问您的问题时,不要笼统地说“它不是插入的”,而要说具体的数据流:“我期待这些数据进入程序,但我还有另一个数据。”
    一旦您开始使用它,您就不需要Stackoverflow来回答:您将能够跟踪问题到数据意外出错的地方。所以,你找到了错误的地方

    运行问题代码也非常重要。并在您遇到问题的环境中运行它。
    运行代码并检查实际结果比仅仅用眼睛看代码要有效得多。
    甚至有些情况只属于您的服务器,其他人不知道,使他们根本无法回答您的问题。
    此外,人类不应该在头脑中运行PHP代码。它可以工作几行,但从某种意义上讲,要在心里运行所有代码并找到错误是不可能的。
    这就是为什么运行代码并打印出所有值、函数结果、检查变量状态等非常重要的原因,并查找其中的不一致性

    当然,要使用这种技术,您必须了解哪些数据正确,哪些不正确。
    这就是为什么从头开始编写代码并自己规划是如此重要的原因。
    如果是你决定的,那么什么数据应该来自JS——你可以判断是好是坏。如果是其他人,你就死定了,注定要再问一次,让事情变得更糟。
    你需要打破这种恶性循环。
    这就是为什么它如此重要的原因——自己编写代码,而不是让别人为您编写代码


    希望它对学习有帮助,祝你好运。

    我使用Firebug进入HTML,经过大量挖掘(我是说大量挖掘),我知道你的问题是什么。但我首先要说的是,你的常识是正确的,因为你要理解自己编写代码所需要的代码

    无论如何,解决方案是您需要添加一个多维数组,并从0开始计算每一行。你需要的是这样的东西:

     var imagecounter = 0;
    
          var result = '';
          imagecounter++;
    
    ....
    
    
         $('.hiddenimg').append('<input type="hidden" name="imgid[' + imagecounter + '][]" id="'+imageID+'" value="' + imageID + '" />');
    
    var-imagecounter=0;
    var结果=“”;
    imagecounter++;
    ....
    $('.hiddenimg')。追加('');
    

    现在您在前面的
    gQuestion++
    中做了类似的事情,这证明了我的观点,即您需要开始学习代码。如果您有几个小时的空闲时间,只需阅读您的代码并尝试了解发生了什么。这只会让您受益:)

    我看到了严重的堆栈溢出竞争:)了解第305行会有所帮助is@ExplosionPills真的,真的,我更新了以显示行号所在的注释。对我来说没有错误。你修好了吗,还是本地的?@Graham不,在我真正的应用程序中,上传文件后,你会
    array(1) { //var_dump($question_ids);
    [1]=> int(171) 
    } array(1) { //var_dump($imgresults);
    [0]=> string(3) "130" 
    } array(1) { 
    [1]=> array(1) { //var_dump($results);
    [0]=> string(1) "B" } } 
    
     var imagecounter = 0;
    
          var result = '';
          imagecounter++;
    
    ....
    
    
         $('.hiddenimg').append('<input type="hidden" name="imgid[' + imagecounter + '][]" id="'+imageID+'" value="' + imageID + '" />');