2014-12-02 2 views
-2

Попытка ввода данных POST в качестве новой записи в базе данных mysql. Таблица содержит 5 столбцов:Число столбцов PHP MYSQL не соответствует

ContractorID, ПгвЬЫат, LastName, адрес электронной почты, пароль

$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 ПОДРЯДЧИКА (ПгвЬЫат, LastName, адрес электронной почты, пароль) VALUES ('w4rwsfsdf', 'wqerwerw', ' rweqrqwer '' qwerqwer ') Количество столбцов не соответствует количеству значений в строке 1

EDIT: Это была недостающая запятая, вызывающая проблему, я неправильно скопировал код здесь и сообщение об ошибке. Не удалось скопировать и вставить linux в windows.

+0

@JayBlanchard Посмотрите ниже;) –

+0

Не использовать «ПО УМОЛЧАНИЮ», используйте NULL. – touchmx

+1

Ваш код не соответствует вашей ошибке. Ваша ошибка показывает, что вам не хватает запятой между значениями электронной почты и пароля. Пожалуйста, ознакомьтесь с типичным кодом и ошибками, которые вы используете/видите. –

ответ

2

В соответствии с вашим originally posted question, прежде чем вы добавили недостающую запятую и не отметили ее как «редактирование».

У вас есть запятая отсутствует в ваших ЗНАЧЕНИЯ

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

изменить его на:

VALUES ('DEFAULT', '$firstName' 

Edit:

Я предлагаю вам удалить/уроните настоящую таблицу если вы можете, и выполните следующие действия:

$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

+0

@ user2837791 Что такое столбец «ContractorID» как «auto_increment» и тип? Кроме того, попробуйте использовать «VALUES» (NULL, «$ firstName», как указано в комментариях, или «VALUES ('', '$ firstName'' –

+0

@ user2837791 Кроме того, какая из них - переменная подключения DB,' $ db' или '$ conn'? –

Смежные вопросы