2014-12-02 82 views
-2

嘗試將POST數據作爲新記錄插入到mysql數據庫中。表有5列:PHP MYSQL列數不匹配

ContractorID,名字,姓氏,電子郵件,密碼

$insert = "INSERT INTO CONTRACTOR (firstName, lastName, email, password) 
VALUES ($firstName, $lastName, $email, $password)"; 

if (mysqli_query($conn, $insert)) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $insert . "<br>" . mysqli_error($conn); 
} 

ContractorID是一個自動遞增的主鍵,所以我想我可以把它關閉插件。然而,即使我更改爲:

$insert = "INSERT INTO CONTRACTOR (ContractorID, firstName, lastName, email, password) 
VALUES ('DEFAULT', '$firstName', '$lastName', '$email', '$password')"; 

我得到了同樣的錯誤:

錯誤:INSERT INTO承包商(名字,姓氏,電子郵件,密碼)VALUES( 'w4rwsfsdf', 'wqerwerw',' ) 列數不匹配第1行的值計數

編輯:這是一個缺少逗號導致的問題,我錯誤地複製了代碼錯誤在這裏和錯誤消息正確。無法將Linux複製並粘貼到Windows。

+0

@JayBlanchard請看下面;) – 2014-12-02 19:32:22

+0

不使用'DEFAULT',使用NULL。 – touchmx 2014-12-02 19:35:13

+1

您的代碼與您的錯誤不符。您的錯誤顯示您在電子郵件和密碼值之間缺少逗號。請養成應對和粘貼您使用/看到的確切代碼和錯誤的習慣。 – 2014-12-02 19:40:02

回答

2

根據您的originally posted question添加缺少的逗號並且未將其標記爲「編輯」。

你有一個逗號在你的價值觀

VALUES ('DEFAULT' '$firstName' 
       ^right there 

改變它缺少:

VALUES ('DEFAULT', '$firstName' 

編輯:

我建議你刪除/放下你現在的表如果可以的話,運行以下命令:

$sql = "CREATE TABLE IF NOT EXISTS CONTRACTOR 
(
    `ContractorID` int(10) NOT NULL AUTO_INCREMENT, 
    `firstName` varchar(55) DEFAULT NULL, 
    `lastName` varchar(55) DEFAULT NULL, 
    `email` varchar(255) DEFAULT NULL, 
    `password` varchar(255) DEFAULT NULL, 
    PRIMARY KEY (`ContractorID`) 

      ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; 

INSERT INTO CONTRACTOR (firstName, lastName, email, password) 
VALUES ('John', 'Doe', '[email protected]', 'test_password')"; 

if (mysqli_query($conn, $sql)) { 
    echo "New table created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . mysqli_error($conn); 
} 

然後再次嘗試查詢。

$insert = "INSERT INTO CONTRACTOR (firstName, lastName, email, password) 
VALUES ('Bob', 'Smith', '[email protected]', 'test_password_2')"; 

if (mysqli_query($conn, $insert)) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $insert . "<br>" . mysqli_error($conn); 
} 
+0

缺少的逗號只是發佈該問題的錯誤。我在代碼中,仍然有列計數錯誤。 – user2837791 2014-12-02 19:34:37

+0

@ user2837791什麼是'ContractorID'列設置爲「auto_increment」並鍵入?另外,嘗試使用'VALUES(NULL,'註釋中指出的$ firstName''或'VALUES('','$ firstName'' – 2014-12-02 19:36:40

+0

@ user2837791另外,哪一個是DB連接變量,'$ db'或'$ conn'? – 2014-12-02 19:39:31