这是我的代码片段:
$ftype = "HF Custom";
$stype = "Custom";
$mysqli->autocommit(FALSE);
for($j = 1; $j < $columns; $j++){
$fname = $pdata[0][$j];
$startID++;
echo "id: ".$startID. "\n";
if($isExist[$j] <> 1){
// insert new admin record
$sql = "INSERT INTO `admin_custom` (`Fund_ID`, `user_id`, `Fund_Name`,`Fund_Type`,`Fund_Strategy_Classif_1`) VALUES (?,?,?,?,?)";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param('iisss',$startID ,$user_id, $fname, $ftype, $stype);
$stmt->execute();
$stmt->close();
}
.......
}
$mysqli->commit();
问题在于,当我检查admin-custom表中的记录时,所有Fund_ID字段是相同的并且在进入循环之前等于$ startID。所有其他字段都是正确的,并根据$ pdata数组进行更改。
回显$ startID显示正确的递增值,它与进入循环前分配的唯一值绑定。
这里有什么问题?
最新消息!!!我已将Fund_ID字段更改为varchar(64),将bind_param的类型更改为'string'。现在它写出正确的字符串。因此,看起来int(11)不足以代表我的Ids ---需要将其更改为bigint。
答案 0 :(得分:0)
根据评论中的更新,如果您的字段Fund_ID
是int(11),那么最大值为2147483647,这是$startId
的初始值。
更改为BIGINT将是更好的选择。