2017-09-22 155 views
1

所以我想,以填补我的表了数据,但我不断收到此错误:SQLSTATE [23000]:完整性约束违规:1048列“teamName”不能为空

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'teamName' cannot be null

奇怪的是如果我回显出$ myarray [1],它会循环显示每个团队的名字,所以我不明白为什么我在阅读数据时遇到这么多问题?数组显然不包含null?

这里的表的创建:

$createQuery ="CREATE TABLE TeamTable 
(
    teamID INT(6) NOT NULL AUTO_INCREMENT, 
    teamName VARCHAR(60) NOT NULL, 
    Flag  BLOB, 
    Country VARCHAR(30) NOT NULL, 

    PRIMARY KEY(teamID) 
)"; 
$pdo->exec($createQuery); 

这里就是我想要插入到表:

$filet = fopen("team.csv", "r"); 
while(!feof($filet)) 
{ 
$myarray = fgetcsv($filet); 

$insertTeamQuery ="INSERT into TeamTable(teamName, Country, Flag) VALUES(:val1,:val2,:val3)"; 
$stmt = $pdo->prepare($insertTeamQuery); 
echo $myarray[1]; 
$stmt->execute(array(':val1' => $myarray[1], ':val2' => $myarray[2], ':val3' => $myarray[3])); 
$stmt->execute(); 
} 
fclose($filet); 

我的phpMyAdmin的检查,还有,就是要6支球队,但是我有每支球队中有两支是奇怪的?不知道为什么它将相同的值在每个循环中放入两次?但是如果它填满了,它显然填满了表格,所以我不明白这个错误,它说它是空的?一直在努力与这一个相当长一段时间

如果任何人有任何想法有什么问题,我将不胜感激一些帮助,提前致谢! :)

回答

1

这是因为你已经执行了两次,

$stmt->execute(); 

删除此行,您的代码将正常工作

+0

噢,当然,我的不好,这是解决了重复问题,谢谢,但在我原来的帖子顶部的其他错误仍然存​​在,即使在PHPMyAdmin视图表中看起来像我期望填充的tho th?我在努力了解在表格中,“TeamName”是如何为空的,我的所有6个球队都有一个球队名称?但我仍然收到错误。 –

+0

可以请你加'的print_r($ stmt-> errorInfo中());'execute'后'和共享所表现出比指定的错误 –

+0

这里其他的输出: 阵列([0] => 00000 [1 )Array([0] => 00000 [1] => [2] =>)Array([0] => [1] => [2] =>数组([0] => 00000 [1] => [2] =>)数组([0] => [1] => [2] => ) –

0

如果你想insert继续工作,你可以尝试使用INSERT IGNORE

INSERT into TeamTable (teamName, Country, Flag) VALUES (:val1,:val2,:val3);

set部分什么都不做 - 值不'改变 - 但效果是忽略错误。

+0

您认为这是一个很好的选择吗?我只是困惑,因为表格似乎填充,因为我期望在PHPMyAdmin页面内,但显然在TeamName中有NULL值? –

+0

是的,当然这是最好的选择。 –

相关问题