Странно записывает данных в MySQL ...

hoting

Новичок
Всем привет, уже 2 часа ломаю голову и не могу понять, почему данные из формы не хотят записываться в базу данных.
Имеем
Общая форма добавления контактов, есть поле <input> которое передает email пользователя, его запись такая
Код:
<input type=\"email\" name=\"email\" placeholder=\"[email protected]\" />
есть обработчик формы в котором есть строчка на вставку email в базу
Код:
if($_POST['email']!=0) {
   $queryinsertpeopleemail = mysql_query("INSERT INTO `peopleemail` (id_peoples, email) VALUES ('$kundeid','$email_name')");}
все казалось придельно просто но есть одно НО, вся форма работает и вставляет другие данные, а вот данные email не хочет, причем заметил такую вещь, если в адресе присутствует цифра, то вставка произойдет, если нет, то запись да же не появится ... кто сталкивался, скажите куда можно посмотреть ...
 

WMix

герр M:)ller
Партнер клуба
вот на много интереснее HTTP и SQL запросы. -- то что произходит реально когда выполнятся вышеприведенные инструкции. а после можно и о MySQL поговорить
 

hoting

Новичок
вот на много интереснее HTTP и SQL запросы. -- то что произходит реально когда выполнятся вышеприведенные инструкции. а после можно и о MySQL поговорить
В каком смысле? какие данные нужно предоставить? .... Реально смысл очень прост, из формы в обработчик через POST передают данные, если эти данные существуют, записываем их в таблицу. Мне не понятно почему он не записывает, причем если ввести адре с цифрами его почему то запишет. Есть еще поле телефон, туда при той же конструкции кода все прекрасно залетает ...
адрес вводим по типу [email protected]
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
@hoting, и какой же адрес с цифрами мы вводим?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
@hoting, а теперь иди в мануал и читай там о том, как у тебя происходит приведение типов, когда ты сравниваешь целове число и строку.
 

hoting

Новичок
@hoting, а теперь иди в мануал и читай там о том, как у тебя происходит приведение типов, когда ты сравниваешь целове число и строку.
В упор не пойму как мне это может помочь, смысл тогда задавать вопросы гуру, если можно штудировать мануал ...

лучше юзай if (!empty($_POST['email']))
И так то же пробыал, смысл в том, что не пишет в базу, и не могу понять почему ...
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
@hoting, знание основ - это "a must", то есть обязательное условие, и если ты их не знаешь, у нас просто не сложится разговор.

Разжую для ленивых, если ты используешь такое условие:
PHP:
if($_POST['email']!=0) { }
У тебя твоя текстовая строка email преобразуется в тип integer и сравнивается с целым числом 0.

Как это происходит читаем тут:

http://php.net/manual/ru/language.types.type-juggling.php
http://php.net/manual/ru/language.types.string.php#language.types.string.conversion
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
До кучи:

http://php.net/manual/ru/language.operators.comparison.php
В случае, если вы сравниваете число со строкой или две строки, содержащие числа, каждая строка будет преобразована в число, и сравниваться они будут как числа. Эти правила также распространяются на оператор switch. Преобразование типов не происходит при использовании === или !== так как в этом случае кроме самих значений сравниваются еще и типы.
 
Сверху