2017-09-22 353 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

是的,當然這是最好的選擇。 –

相關問題