簡體   English   中英

SQLSTATE [23000]:違反完整性約束:1048列“ teamName”不能為空

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

所以我試圖用數據填充我的表,但我不斷收到此錯誤:

SQLSTATE [23000]:違反完整性約束:1048列“ teamName”不能為空

奇怪的是,如果我回顯$ myarray [1],它將循環通過並正確打印每個團隊的名稱,所以我不明白為什么我在讀取數據時遇到這么多問題? 數組顯然不包含空值?

這是表格的創建:

$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個團隊,但每個團隊我只有2個,這很奇怪嗎? 不知道為什么每個循環都將相同的值放入兩次? 但是,如果將表填滿,顯然可以填滿表格,因此我不理解該錯誤,因為它說它為null? 現在已經為此苦苦掙扎了很長時間

如果有人知道怎么了,我將不勝感激,在此先感謝您的幫助! :)

這是因為您執行了兩次,

$stmt->execute();

刪除此行,您的代碼將正常運行

如果您希望insert繼續工作,可以嘗試使用INSERT IGNORE

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

set部分不執行任何操作-值不變-但結果是忽略該錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM