【发布时间】:2016-12-15 21:25:27
【问题描述】:
我正在通过 PHP 将 .csv 中的两行插入到表中。
我还会跟踪任何错误,如果发生错误,我不会提交交易。插入表后,我检索结果行的 ID(它们都在一个事务中提交),并且 csv 的第一行对应于第二个 ID。我也试过在不同的地方添加一个mysqli_commit,还是一样的问题
$queryInsert = "INSERT INTO ".$table." VALUES(NULL,?,?,?,1,?)";
if (!($stt= mysqli_prepare($con,$queryInsert))){
die('Failed');
}
//some arbitrary data checking
if ($cols[8] == 'No' || $cols[8] == 'N' || $cols[8] == '0'){
$ref = 0;
}else{
$ref = 1;
}
mysqli_stmt_bind_param($stt,"ssii",$cols[6],$cols[7],$runUID,$ref);
$in = mysqli_stmt_execute($stt);
mysqli_stmt_close($stt);
$uid = mysqli_insert_id($con);
mysqli_commit($con);
echo $uid;
如果上一行条目是284,输出是287和286(上次尝试插入285,失败,但ID无效以某种方式保留。所以它尝试插入286和287,但尝试插入287在 286 之前并再次失败)。第二行(ID 较低)插入得非常好,而较高的则不然。怎么回事?
【问题讨论】:
标签: php mysql csv mysqli transactions