2013-07-22 2 views
0

Кто-нибудь видит что-то не так с этим заявлением INSERT? Это не удается для меня при использовании в PHP-коде. Я использую MySql 5.6. dept_id является основным ключом. Я не вижу ничего плохого в синтаксисе, но он не работает точно так же. Любая помощь была бы потрясающей!Ошибка ввода MYSQL - Синтаксис правильный?

$add_sql = @mysql_query("INSERT INTO `vf_department` (`dept_id`,`descr`,`sub_dept`)VALUES('','$new_desc','$new_sub')") or die("Can not add item."); 
+4

Да, первое, что я вижу плохого в том, что вы используете '@' префикс для подавления ошибок. Если запрос терпит неудачу, и вы не знаете, почему, если вы видите сообщение об ошибке, это ваш первый шаг. – David

+1

Первичный ключ не может быть 0: – Scotch

+4

1) Не подавляйте сообщения об ошибках с помощью '@'. 2) Почему бы не использовать 'или die (mysql_error())', чтобы увидеть, что такое сообщение об ошибке, а не сообщение по умолчанию, которое не говорит вам ничего полезного. 3) Ваша фактическая ошибка, вероятно, связана с тем, что вы добавляете пустую строку в первичный ключ – andrewsi

ответ

1

Ваш главный ключ - автоматический прирост? Если это так, вам не нужно иметь его как часть инструкции insert.

+0

Или оставьте столбец AUTO_INCREMENT в инструкции INSERT и укажите ключевое слово NULL в предложении VALUES в качестве значения, которое должно быть присвоено столбцу. – spencer7593

+0

Спасибо за ответы! Большинство ответов были частично правильными и получили меня там, где я должен был быть. Огромное спасибо!!!!! –

0

Я согласен с ebizzity ... если один столбец является автоматическим приращением, оставьте его вне команды вставки, MySQL будет генерировать это для вас. Что касается всех других комментариев, я удивлен, что никто не упоминал о вашем воздействии на SQL-инъекцию.

Если значения для вашего $ new_desc и/или $ new_sub содержат одиночную кавычку, это компенсировало бы баланс вашей команды и заставляло бы ее задохнуться ... не говоря уже о том, что МОЖЕТ БЫТЬ с SQL-инъекцией. Посмотрите на очистку входящих данных и параметризацию ваших вызовов.

0

попробовать это

$add_sql = mysql_query("INSERT INTO `vf_department` (`descr`,`sub_dept`) 
      VALUES('$new_desc','$new_sub')") or die(mysql_error()); 
Смежные вопросы