PHP mysqli:循环中的bind_param

时间:2013-10-01 00:50:27

标签: php mysql mysqli

这是我的代码片段:

    $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。

1 个答案:

答案 0 :(得分:0)

根据评论中的更新,如果您的字段Fund_ID是int(11),那么最大值为2147483647,这是$startId的初始值。

更改为BIGINT将是更好的选择。