mysqli执行返回空boole

时间:2017-08-31 10:37:38

标签: php database mysqli boolean

我已经注意到有关帖子存在类似标题的警告,但它们没有证明我遇到的问题。它们指的是我认为没有的ajax和超时问题。

调用下面的php函数将Web表单中的详细信息插入到mysql数据库中。此函数返回一个值但不幸的是它总是返回“Error,-4”。这意味着:

  1. 准备声明已成功准备
  2. 参数绑定成功
  3. 但:

    1. 返回的execute()boole不是1.
    2. 没有新行插入mysql数据库
    3. 我介绍了很多日志调用来尝试自己解决问题,但是我已经达到了对mysql理解的极限。

      正如您所看到的,我还包含了对mysql db的连接测试。一切,(php,mysql和firefox)都在同一个物理主机上运行。

      function submit_new_prod_code_request($BULK_LIQUID_CODE,$PROD_DESC,
                                        $SKU_TYPE,$SKU_PROD_NAME,
                                        $SKU_PROD_DESC,
                                        $SUBUNIT_VOL,$SUBUNITS,$LITRE_PER_UNIT,
                                        $PERC_ALC,$CN_CODE,$ERN_CODE,
                                        $ERN_CODE_DOMESTIC,
                                        $VAT_APP, $VAT_RATE,
                                        $DUTY_RATE,$DUTY_PER_UNIT,
                                        $TENANT,
                                        $PH_MIN,$PH_MAX,
                                        $ACID_MIN,$ACID_MAX,
                                        $COLOUR_MIN,$COLOUR_MAX,
                                        $TURBIDITY,
                                        $EAN_BOTTLE,$EAN_PALLET,$PALLET_TYPE,
                                        $LAYERS_PER_PALLET,$CASES_PER_LAYER,
                                        $BOTTLE_TYPE,$BOTTLE_CLOSURE,
                                        $CASE_CODE,$DIVISION,
                                        $BRIX_MIN,$BRIX_MAX,
                                        $GIFT,
                                        $db,$log,$session){
      
      $submit_success = -1;
      
      if ($db->connect_error) {
          $log->lwrite($session['first_name'].' '.$session['last_name'].' Prod Tree db connection test: '.$db->connect_error);
      
      }
      else{
          $log->lwrite($session['first_name'].' '.$session['last_name'].' Prod Tree db connection test: connected');
      
      }
      $log->lwrite($session['first_name'].' '.$session['last_name'].' Prod Tree connection status:'.$db->stat());
      
      //submit new prod code to product tree
      $sql_str=$db->prepare("INSERT INTO product_tree (BULK_LIQUID, DESCRIPTION, SKU_TYPE, SKU_PROD_NAME, SKU_PROD_DESC, SUBUNIT_VOL, SUBUNIT, LITRES_PER_UNIT, PERC_ALC, CN_CODE, ERN_CODE, ERN_CODE_DOMESTIC, VAT_APPLICABLE, VAT_RATE, DUTY_RATE, DUTY_PER_UNIT, tenant_name, ph_min, ph_max, acid_min, acid_max, colour_min, colour_max, turbidity, ean_bottle, ean_pallet, pallet_type, layers_per_pallet, cases_per_layer, bottle_type, closure, case_code, division, perc_brix_min, perc_brix_max, GIFT_PACK) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
      
      if(!$sql_str){
          $log->lwrite($session['first_name'].' '.$session['last_name'].' Prod Code Create Error 1: '.$db->error);
          $log->lwrite($session['first_name'].' '.$session['last_name'].' Prod Code Create Error 1: '.$sql_str->error);
          $ret=array('Error:',-1);
      }
      else{
          $rs=$sql_str->bind_param('sssssddddssssdddsdddddddsssddssssdds',$bulk_liquid_code,$PROD_DESC,$SKU_TYPE,$SKU_PROD_NAME,$SKU_PROD_DESC,$subunit_vol,$subunits,$litre_per_unit,$perc_alc,$CN_CODE,$ERN_CODE,$ERN_CODE_DOMESTIC,$VAT_APP, $VAT_RATE, $DUTY_RATE,$DUTY_PER_UNIT,$tenant,
                                   $PH_MIN,$PH_MAX,
                                   $ACID_MIN,$ACID_MAX,
                                   $COLOUR_MIN,$COLOUR_MAX,
                                   $TURBIDITY,
                                   $EAN_BOTTLE,$EAN_PALLET,$PALLET_TYPE,
                                   $LAYERS_PER_PALLET,$CASES_PER_LAYER,
                                   $BOTTLE_TYPE,$BOTTLE_CLOSURE,
                                   $CASE_CODE,$DIVISION,
                                   $BRIX_MIN,$BRIX_MAX,
                                   $GIFT);
          if(!$rs){
              $log->lwrite($session['first_name'].' '.$session['last_name'].' Prod Code Create Error 2: '.$sql_str->error);
              $log->lwrite($session['first_name'].' '.$session['last_name'].' Prod Code Create Error 2: '.$db->error);
              $ret=array('Error:',-2);
          }
          else{
              $didwork=$sql_str->execute();
              $log->lwrite($session['first_name'].' '.$session['last_name'].' Prod Tree Create did it work?: '.gettype($didwork));
              $log->lwrite($session['first_name'].' '.$session['last_name'].' Prod Tree Create did it set?: '.isset($didwork));
              $log->lwrite($session['first_name'].' '.$session['last_name'].' Prod Tree Create did it work?: '.$didwork);
              $log->lwrite($session['first_name'].' '.$session['last_name'].' Prod Tree Create did it work?: '.is_null($didwork));
      
      
              if(!$sql_str){
                  $log->lwrite($session['first_name'].' '.$session['last_name'].' Prod Tree Create Error 2: '.$sql_str->error);
                  $log->lwrite($session['first_name'].' '.$session['last_name'].' Prod Tree Create Error 2: '.$db->error);
                  $ret=array('Error:',-3);
      
              }
              else{
                  if($didwork==1){
                      $ret=array('Success:',1);
                  }
                  else{
                      $ret=array('Error:',-4);
                  }
              }
          }
      }
      $sql_str->close();
      return $ret;
      

      }

      这是日志的结尾,我认为问题在于:

      [31 / Aug / 2017:10:18:34](check_for_duplicate_sku)USER SURNAME产品树数据库连接测试:已连接
      [31 / Aug / 2017:10:18:34](check_for_duplicate_sku)USER SURNAME Prod Tree连接状态:正常运行时间:1162线程:1个问题:58慢查询:0打开:52刷新表:1打开表:46每秒查询数平均:0.049
      [31 / Aug / 2017:10:18:34](check_for_duplicate_sku)用户SURNAME产品树创建是否有效?:boolean
      [31 / Aug / 2017:10:18:34](check_for_duplicate_sku)用户SURNAME产品树创建设置了吗?:1
      [31 / Aug / 2017:10:18:34](check_for_duplicate_sku)用户SURNAME产品树创建是否有效?:
      [31 / Aug / 2017:10:18:34](check_for_duplicate_sku)用户SURNAME产品树创建是否有效?:

      日志文件的第二行应该(据我所知)为1或0(布尔值),最后一行is_null也应该是一个布尔值,但两者都返回没有值(我可以看到)。有没有人有任何想法?我错过了一些明显的东西吗我怀疑连接是否正在死亡或者是一些超时问题,这就是我进行连接检查和统计的原因。欢迎任何想法和想法。

      编辑1: $ vardump = var_export($ didwork,true);

      $ log-> lwrite($ session ['first_name']。''。$ session ['last_name']。'Prod Tree Create VAR DUMP:'。$ vardump);

      [31 / Aug / 2017:11:33:56](check_for_duplicate_sku)USER SURNAME产品树创建VAR DUMP:false

      var_export返回false,我认为是根据以下内容的布尔值的预期行为:http://php.net/manual/en/function.var-export.php

      编辑2:

      ob_start();
      var_dump($didwork);
      $result = ob_get_clean();
      $log->lwrite($session['first_name'].' '.$session['last_name'].' Prod Tree Create VAR DUMP: '.$result);
      

      [31 / Aug / 2017:12:15:32](check_for_duplicate_sku)USER SURNAME产品树创建VAR DUMP:bool(false)

      var dump似乎将返回的类型标记为boolean(expected),但是(false)是否指示boolean的值为false?还是未设置?

0 个答案:

没有答案