MySQL - Выборка данных

Ответить
Аватара пользователя
lora.1

MySQL - Выборка данных

Сообщение lora.1 »

Всем здравствовать.Осваиваю mysql и php на denwer.Создал форму регистрации.Регистрация работает,но данные из необязательных полей в бд заносятся выборочно и при попытки вытащить тоже не все выходят.Все поля и переменные сделал по одному шаблону.Почему одни заносятся,а другие нет?Подскажите где копать.Только попроще,если можно.
Аватара пользователя
Coutty

Re: MySQL - Выборка данных

Сообщение Coutty »

Цитата:



На передаче "Что? Где? Когда?":

- Уважаемые знатоки, у меня в подвале скрипит. Что это?



Слишком мало информации для размышления. Нужна значимая часть скрипта и SQL-запрос.

Может быть там в полях попадаются кавычки, может быть они отбрасываются по условию или вообще не передаются через $_POST, т.к. неправильно указан аттрибут name у поля.

Добавьте в начало скрипта строку print_r($_POST); чтобы увидеть, что передаётся в скрипт post-запросом, а что - нет.



Попробуйте поставить себе phpMyAdmin и посмотреть через него - есть ли вообще данные в БД, которые "не все выходят". Посмотрите там заодно как надо строить запросы на добавление и извлечение.
Аватара пользователя
lora.1

Re: MySQL - Выборка данных

Сообщение lora.1 »

Часть обработчика:





-------------------------

скрин БД.прилагаю.



Временами регистрация с заполненными необязательными полями вообще не проходит.Иногда проходит.Там где в базе совсем пустые поля не захотела с ними регистрировать.

Запрос

print_r($_POST);

показывает тоже,что и в базе.Сам скрипт на извлечение работает,если все в базу занеслось.



ID45:



оперативка:aa

диск:jj

пк:fff

монитор:222

система:

материнка:hhh



Эта "система:"ни в какую не проходит.И имя менял и местами менял-хоть убей.
Вложения

[Расширение jpg было запрещено, вложение больше недоступно.]

Аватара пользователя
Coutty

Re: MySQL - Выборка данных

Сообщение Coutty »

Логика построения условных выражений не совсем очевидна, но даже если смотреть "как есть", то видна ошибка в этой строке:


Цитата lora.1:



if (isset($_POST['sees'])) { $sees = $_POST['sees']; if ($login == '') { unset($sees);} }
MySQL - Выборка данных




вместо $login, наверное, должно быть $sees?



Ещё мне не нравится, что используется unset() для переменных, если они не заданы. Но если вы их удаляете, то по идее скрипт должен выдать ошибку в том месте, где вы формируете запрос INSERT, т.к. используется необъявленная переменная. Впрочем, я точно не скажу - возможно, PHP необъявленные переменные считает за NULL. Лучше оставлять пустую строку, чем NULL.



Я бы писал так:



PHP код:

Код: Выделить всё

$sees = (isset($_POST['sees'])) ? $_POST['sees'] : ''; // если переменная $_POST['sees'] задана, то используем её. Если не задана, то присваиваем пустую строку 






хотя для начинающих такие конструкции могут казаться неочевидными.



Если в переменных будут попадаться кавычки, то должно с ошибкой падать.



Ну и в вашем скрипте ещё SQL-инъекции можно делать, т.ч. неплохо бы организовать проверку содержимого переменных.




Цитата lora.1:



Запрос print_r($_POST); показывает тоже,что и в базе.
MySQL - Выборка данных




Т.е. не всё? Тогда, быть может, у вас HTML-форма неправильно составлена?



Вкратце:

1. Заменить $login на $sees

2. Избавиться от unset()

3. Проверить HTML-форму
Аватара пользователя
Coutty

Re: MySQL - Выборка данных

Сообщение Coutty »

Всё сделал как сказали.Форму переделал.Ерунда какая то.Вот коды и скрипты,взгляните,время будет.Заполняю эти н.о. поля не идёт.удаляю проходит,всё нормально. Пока попробую новый скрипт найти.
Вложения

[Расширение jpg было запрещено, вложение больше недоступно.]

Аватара пользователя
Coutty

Re: MySQL - Выборка данных

Сообщение Coutty »

Ух, как много сразу)

Когда "не идёт" - выдаёт ошибку или что-то другое пишет? Или просто не записывает в БД?

Опять же сразу в глаза бросается - в базе данных поле называется mahter, а в запросе Insert - mather.

Также на всякий случай сохраните скрипт в юникоде, а то мало ли... Я как-то раз из-за разных кодировок в скриптах целый день ошибку искал >_<

И ещё: в регулярном выражении проверки e-mail'а не допускаются адреса вида [url=mailto:vasya.ivanov@gmail.com]vasya.ivanov@gmail.com[/url]
Аватара пользователя
lora.1

Re: MySQL - Выборка данных

Сообщение lora.1 »

Выдаёт ошибку,которая прописана в конце скрипта-- exit ("Ошибка! Вы не зарегистрированы.");--.Поля очищаю-работает.Я пока лох в php,и не понимаю какая разница(кроме имени)в этих строках:

if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} }

if (isset($_POST['sees'])) { $sees = $_POST['sees']; if ($sees == '') { unset($sees);} }

Почему с первой работает,а при добавлении второй нет?

Ведь данная ошибка распостраняется на эту часть скрипта,как я понимаю:

$result2 = mysql_query ("INSERT INTO users (login,password,avatar,email,teep_pc,sees,hd,member,block,disp,mather,date)

VALUES('$login','$password','$avatar','$email','$teep_pc','$sees','$hd','$member','$block','$disp',' $mather',NOW())");// Проверяем, есть ли ошибки

if ($result2=='TRUE')

{

Здесь тоже я просто добавил переменные.

(В БД mather исправил,спасибо)
Аватара пользователя
Coutty

Re: MySQL - Выборка данных

Сообщение Coutty »

Давайте ещё посмотрим какой SQL-запрос формируется.

Напишите так:



PHP код:

Код: Выделить всё

$sql = "INSERT INTO users (login,password,avatar,email,teep_pc,sees,hd,member,block,disp,mather,date)

 VALUES('$login','$password','$avatar','$email','$teep_pc','$sees','$hd','$member','$block','$disp',' $mather',NOW())";

echo $sql;

$result2 = mysql_query($sql); 






И посмотрим, что в $sql занесётся (когда не работает).
Аватара пользователя
lora.1

Re: MySQL - Выборка данных

Сообщение lora.1 »

Провёл несколько регистраций.Теперь ошибка пропала(мистика),но все данные не заносятся.



INSERT INTO users (login,password,avatar,email,teep_pc,sees,hd,member,block,disp,mather,date)



VALUES('rrrrrr','07b432d25170b469b57095ca269bc202b3p6f','avatars/net-avatara.jpg','ew.bolgow@yandex.ru','ggggg','hhhh','','','','jjjjjj',' ',NOW())



Вам на E-mail выслано письмо с cсылкой, для подтверждения регистрации. Внимание! Ссылка действительна 1 час. Главная страница
Аватара пользователя
lora.1

Re: MySQL - Выборка данных

Сообщение lora.1 »

P.S. Ошибка в скрипте найдена.Спасибо.
Ответить

Вернуться в «Программирование и базы данных»