|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MySQL - Выборка данных |
|
MySQL - Выборка данных
|
Пользователь Сообщения: 86 |
Профиль | Отправить PM | Цитировать Всем здравствовать.Осваиваю mysql и php на denwer.Создал форму регистрации.Регистрация работает,но данные из необязательных полей в бд заносятся выборочно и при попытки вытащить тоже не все выходят.Все поля и переменные сделал по одному шаблону.Почему одни заносятся,а другие нет?Подскажите где копать.Только попроще,если можно.
|
|
Отправлено: 23:39, 05-09-2012 |
Кот Ти Сообщения: 7318
|
Профиль | Отправить PM | Цитировать Цитата:
Может быть там в полях попадаются кавычки, может быть они отбрасываются по условию или вообще не передаются через $_POST, т.к. неправильно указан аттрибут name у поля. Добавьте в начало скрипта строку print_r($_POST); чтобы увидеть, что передаётся в скрипт post-запросом, а что - нет. Попробуйте поставить себе phpMyAdmin и посмотреть через него - есть ли вообще данные в БД, которые "не все выходят". Посмотрите там заодно как надо строить запросы на добавление и извлечение. |
|
Отправлено: 05:15, 06-09-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 86
|
Профиль | Отправить PM | Цитировать Часть обработчика:
<?php //заносим введенный пользователем текст в переменную $x, если он пустой, то уничтожаем переменную if (isset($_POST['sees'])) { $sees = $_POST['sees']; if ($login == '') { unset($sees);} } if (isset($_POST['teep'])) { $teep = $_POST['teep']; if ($teep == '') { unset($teep);} } if (isset($_POST['pl'])) { $pl = $_POST['pl']; if ($pl == '') { unset($pl);} } if (isset($_POST['hd'])) { $hd = $_POST['hd']; if ($hd == '') { unset($hd);} } if (isset($_POST['op'])) { $op = $_POST['op']; if ($op == '') { unset($op);} } if (isset($_POST['bp'])) { $bp = $_POST['bp']; if ($bp == '') { unset($bp);} } if (isset($_POST['mon'])) { $mon = $_POST['mon']; if ($mon == '') { unset($mon);} } if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} } if (isset($_POST['code'])) { $code = $_POST['code']; if ($code == '') { unset($code);} } if (isset($_POST['email'])) { $email = $_POST['email']; if ($email == '') { unset($email);} } if (empty($login) or empty($password)or empty($code) or empty($email)) { exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!"); ---------------------------------------------- $result2 = mysql_query ("INSERT INTO users (login,password,avatar,email,teep,sees,hd,op,bp,mon,pl,date) VALUES('$login','$password','$avatar','$email','$teep','$sees','$hd','$op','$bp','$mon','$pl',NOW()) "); if ($result2=='TRUE') { ---------------------- Запрос: <?php $db = mysql_connect("localhost","root",""); mysql_select_db("nikita",$db); $resultat = mysql_query("SELECT teep,sees,op,hd,pl,bp,mon FROM users WHERE id='43'",$db); $array = mysql_fetch_array($resultat); echo "<br>оперативка:".$array['op']."<br>диск:".$array['hd']."<br>пк:".$array['teep']; echo "<br>монитор:".$array['mon']."<br>система:".$array['sees']."<br>материнка:".$array['pl']; ?> ------------------------- скрин БД.прилагаю. Временами регистрация с заполненными необязательными полями вообще не проходит.Иногда проходит.Там где в базе совсем пустые поля не захотела с ними регистрировать. Запрос print_r($_POST); показывает тоже,что и в базе.Сам скрипт на извлечение работает,если все в базу занеслось. ID45: оперативка:aa диск:jj пк:fff монитор:222 система: материнка:hhh Эта "система:"ни в какую не проходит.И имя менял и местами менял-хоть убей. |
Отправлено: 09:47, 06-09-2012 | #3 |
Кот Ти Сообщения: 7318
|
Профиль | Отправить PM | Цитировать Логика построения условных выражений не совсем очевидна, но даже если смотреть "как есть", то видна ошибка в этой строке:
Цитата lora.1:
Ещё мне не нравится, что используется unset() для переменных, если они не заданы. Но если вы их удаляете, то по идее скрипт должен выдать ошибку в том месте, где вы формируете запрос INSERT, т.к. используется необъявленная переменная. Впрочем, я точно не скажу - возможно, PHP необъявленные переменные считает за NULL. Лучше оставлять пустую строку, чем NULL. Я бы писал так:
хотя для начинающих такие конструкции могут казаться неочевидными. Если в переменных будут попадаться кавычки, то должно с ошибкой падать. Ну и в вашем скрипте ещё SQL-инъекции можно делать, т.ч. неплохо бы организовать проверку содержимого переменных. Цитата lora.1:
Вкратце: 1. Заменить $login на $sees 2. Избавиться от unset() 3. Проверить HTML-форму |
||
Последний раз редактировалось Coutty, 06-09-2012 в 17:59. Отправлено: 17:49, 06-09-2012 | #4 |
Пользователь Сообщения: 86
|
Профиль | Отправить PM | Цитировать Всё сделал как сказали.Форму переделал.Ерунда какая то.Вот коды и скрипты,взгляните,время будет.Заполняю эти н.о. поля не идёт.удаляю проходит,всё нормально. Пока попробую новый скрипт найти.
|
|
Отправлено: 23:19, 06-09-2012 | #5 |
Кот Ти Сообщения: 7318
|
Профиль | Отправить PM | Цитировать Ух, как много сразу)
Когда "не идёт" - выдаёт ошибку или что-то другое пишет? Или просто не записывает в БД? Опять же сразу в глаза бросается - в базе данных поле называется mahter, а в запросе Insert - mather. Также на всякий случай сохраните скрипт в юникоде, а то мало ли... Я как-то раз из-за разных кодировок в скриптах целый день ошибку искал >_< И ещё: в регулярном выражении проверки e-mail'а не допускаются адреса вида vasya.ivanov@gmail.com |
Отправлено: 05:23, 07-09-2012 | #6 |
Пользователь Сообщения: 86
|
Профиль | Отправить PM | Цитировать Выдаёт ошибку,которая прописана в конце скрипта-- 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 исправил,спасибо) |
Отправлено: 11:38, 07-09-2012 | #7 |
Кот Ти Сообщения: 7318
|
Профиль | Отправить PM | Цитировать Давайте ещё посмотрим какой SQL-запрос формируется.
Напишите так:
И посмотрим, что в $sql занесётся (когда не работает). |
Отправлено: 16:56, 07-09-2012 | #8 |
Пользователь Сообщения: 86
|
Профиль | Отправить PM | Цитировать Провёл несколько регистраций.Теперь ошибка пропала(мистика),но все данные не заносятся.
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 час. Главная страница |
Отправлено: 18:56, 07-09-2012 | #9 |
Пользователь Сообщения: 86
|
Профиль | Отправить PM | Цитировать P.S. Ошибка в скрипте найдена.Спасибо.
|
Отправлено: 14:54, 09-09-2012 | #10 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
MySQL - Выборка из таблицы | Sergey666 | Программирование и базы данных | 1 | 23-03-2010 06:19 | |
MSFT SQL Server - Выборка по дате | Pulvertum | Программирование и базы данных | 7 | 03-11-2009 00:58 | |
MySQL - [решено] Выборка данных со всех таблиц, которые начинаются с test_ | Artem-Samsung | Программирование и базы данных | 2 | 31-03-2009 15:42 | |
[решено] Выборка данных из mysql и сортировка на php | dima1981 | Вебмастеру | 4 | 11-11-2008 15:06 | |
выборка данных из нескольких страниц | vunder | Программирование и базы данных | 2 | 12-07-2004 20:33 |
|