PHP PDO插入查询错误:完整性约束违规

时间:2013-12-30 10:33:34

标签: php mysql pdo insert

您好,我有一个类似的PHP脚本:

<?php 
require('includes/db-core.php');//My DB info
$dbh = mf_connect_db();//Creates a connection object
$newObjs = array();
for($i=0;$i<6;$i++){
    array_push($newObjs,"data".$i);
}
try {
    for($i=0; i<sizeof($newObjs); $i++){
$stmt2 = $dbh->prepare("INSERT INTO companies_table (data1, data2, data3, data4, data5, data6) VALUES (?, ?, ?, ?, ?, ?)");         
        $stmt2->bindParam(1, $newObjs[$i]);
        $stmt2->bindParam(2, $newObjs[$i]);
        $stmt2->bindParam(3, $newObjs[$i]);
        $stmt2->bindParam(4, $newObjs[$i]);
        $stmt2->bindParam(5, $newObjs[$i]);
        $stmt2->bindParam(6, $newObjs[$i]);
        $stmt2->execute();
    }
    echo "New Row successfully added";
}catch( Exception $e ){
    echo 'Query error : ', $e->getMessage();
}
?>

我收到以下错误:查询错误:SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'data1' cannot be null,但数据插入正确,我不知道为什么这是hapening(错误+插入)。

我所有的表格字段都不为空。

没有人注意到我的这个错误:

try {
    for($i=0; i<sizeof($newObjs); $i++){

我忘记了$符号,真的很抱歉,但这对于学习一点是有好处的:感谢所有提供答案的用户,但下次最好先查看帖子中的错误。

由于

2 个答案:

答案 0 :(得分:1)

编辑:

看起来像你的数据库中的错误似乎你没有列data1 null并且在循环的某个点,同一列似乎有空值。

答案 1 :(得分:0)

如果你坚持使用for,那么它应该是:

$stmt2 = $dbh->prepare("INSERT INTO companies_table (data1, data2, data3, data4, data5, data6) VALUES (?, ?, ?, ?, ?, ?)");  

    for($i=0; i<sizeof($newObjs); $i++){      
    $stmt2->bindParam(($i+1), $newObjs[$i]);

}
$stmt2->execute();

但在你的情况下,它看起来总体上是个坏主意

相关问题