Codeigniter和mariadb缺少一行

Codeigniter和mariadb缺少一行,mariadb,codeigniter-3,php-7,hana,Mariadb,Codeigniter 3,Php 7,Hana,我从HANA DB中选择了2k数据并将其插入到mariadb 10.1.19中,但我一直缺少一行(不是第一行或最后一行) 这是我的密码 function sync_supplier($user = null){ ignore_user_abort(true); set_time_limit(0); $this->db->truncate('suppliers'); $dbjpa = $this->load->database('jpa'

我从HANA DB中选择了2k数据并将其插入到mariadb 10.1.19中,但我一直缺少一行(不是第一行或最后一行)

这是我的密码

function sync_supplier($user = null){
    ignore_user_abort(true);

    set_time_limit(0);
    $this->db->truncate('suppliers');

    $dbjpa = $this->load->database('jpa',TRUE);

    $field = '"CardCode","CardName","CardType","GroupCode","Phone1","CntctPrsn","City","E_Mail"';
    $where = "'Y'";

    $result = $dbjpa->query('SELECT '.$field.' FROM JAVAPRIMA_ADI."OCRD" WHERE "frozenFor" != '.$where);

    $resultSupplier = $result->result_array();

    $count = 0;
    foreach($resultSupplier as $supplier) { 
            $data = array(
                'CardCode'=> $supplier['CardCode'],
                'CardName'=> $supplier['CardName'],
                'CardType'=> $supplier['CardType'],
                'GroupCode'=> $supplier['GroupCode'],
                'Phone1'=> $supplier['Phone1'],
                'CntctPrsn'=> $supplier['CntctPrsn'],
                'City'=> $supplier['City'],
                'E_Mail'=> $supplier['E_Mail']
                );

            $this->db->insert('suppliers',$data);
            $count++;
    }

    if ($result->num_rows() > 0){
        echo "num_rows : ".$result->num_rows();
        echo "<br>count : $count";
        return true;
    }
    else {
        return false;
    }
}
这是phpmyadmin计数

这是哈娜的计数


有人能告诉我这里发生了什么事吗?这是一个不幸的供应商,很可能无法收回他的钱…

作为一种快速调试方法。。。您的某一行可能导致了问题,并且没有被插入

要快速测试这种情况,您可以在插入上执行测试。。。插入的结果返回True或False。所以你可以试着与之合作

替换

$this->db->insert('suppliers',$data);
$count++;

$count++;
如果(!$this->db->insert('suppliers',$data)){
echo“在count=$count时插入失败
”; //使用变量转储或打印来代替上述回显 //或者为了好玩而同时使用,但是var_转储更有用! var_dump($data);//这可能更有用 }
这只是检查插入的结果并采取一些操作。你甚至可以放一个出口();在这里只是为了找到冒犯的一行,如果有的话

是的,还有其他方法可以做到这一点,但这会告诉你“可能”出了什么问题


您还可以实现其他一些功能,但这是一个快速的“仅调试检查”,只是为了让您了解可能出现的问题。

执行一条语句时需要大量代码
插入供应商选择*FROM ocrd > RikJead,在不同的服务器上是不同的DB(MiRADB& SAP HANA),然后考虑MILADB连接或联邦X。谢谢这个TimBurnL..我找到了导致问题的原因。我很高兴它有帮助:)
$this->db->insert('suppliers',$data);
$count++;
$count++;
if(! $this->db->insert('suppliers',$data)) {
  echo "The insert failed at count = $count <br>"; 
  // instead of the above echo use the var_dump or print_r
  // or use both for fun, but the var_dump is more useful!
  var_dump($data); // This is probably more useful
}