PHP PDO插入查询错误:完整性约束冲突

PHP PDO插入查询错误:完整性约束冲突,php,mysql,pdo,insert,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);

您好,我有一个这样的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();
}
?>
我忘记了$sign,真的很抱歉,但这有助于了解一点:感谢所有给出答案的用户,但下次最好先查看帖子中的错误

谢谢

编辑:


由于数据库中的错误,似乎无法将列data1设置为null,并且在循环的某个点上,同一列的值似乎为null。

如果坚持使用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();
$stmt2=$dbh->prepare(“插入公司表(数据1、数据2、数据3、数据4、数据5、数据6)的值(?,,,,,,,?)”;
对于($i=0;ibindParam($i+1),$newObjs[$i]);
}
$stmt2->execute();

但在您的情况下,总体来看,这似乎是个坏主意

var_dump$newObjs[$i]让我们知道你得到了什么?@AwladLiton,不需要,因为从上面的循环中可以清楚地看到它。它将是
data1,data2…data6
是的,我检查了,它是data1…但是为什么,要插入的数据数组没有空值,我用var_dump检查了,所有数组都有数据。你试过把语句输出吗循环的IDE?(外部=在循环之前)数据被插入,这让我抓狂,但我以前遇到过这个错误。你试过指定它是哪一部分数据吗?像这样:是的,$stmt2->bindParam(1,$newObjs[$I],PDO::PARAM_STR);同样的错误。这和我做的不一样吗?@OussamaLord你做的是把同样的东西放到$newObjs[$I]在所有列中,您将得到六行,每一行在所有列中都有相同的值。如果您有不同类型的列,则转换将失败,并且会出现错误(就像您所做的那样)。我的所有字段都是Varchar类型,我认为这不成问题。我插入的数组具有字符串数据类型:array(6){'[0]=>string(5)“data0”[1]=>string(5)“data1”[2]=>string(5)“data2”[3]=>string(5)“data3”[4]=>string(5)“data4”[5]=>string(5)“data5”}”
$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();