2014-12-02 80 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