PHP

anton-pribora.ru

Персональный сайт программиста на пхп.
Статьи, файлы, заметки о PHP.

Вопрос / ответ

Здесь можно получить ответ на вопрос по веб-программированию на PHP.

Q:
Доброго времени суток Вам. Помогите разобраться?
ДЕло в том, что я тестю скрипты сайт.ru и у меня проблеммы с регистрацией, а именно, 
она почему-то не завершается и не заносится в БД регистрируемая информация. 
Почему, я понять не могу увы.
A:
После нажатия на "Вход", у меня появилась такая страница

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/users/.../enter.php on line 28 Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/users/.../enter.php on line 34 Ошибка: Логин "Логин" не найден в базе!
Дело в том, что у Вас, видимо, не стоит проверка на правильность выполнения запросов. Поэтому, когда запрос неверный, скрипт продолжает работать в обычном порядке, что и приводит к "странному" поведению. Я бы рекомендовал Вам вместо mysql_query воспользоваться функцией my_query http://anton-pribora.ru/functions/my_query.php , которая покажет ошибки, появляющиеся в процессе работы программы. Помимо этого, есть некоторые правила работы с базой данных MySQL: 1. Правило перед работой: нужно выставить кодировку на соединение my_query('SET names "cp1251"'); // Windows-1251 2. Правило для выборки: всегда проверять ресурс и количество найденных строк <?php // Пример запроса $sql = 'SHOW DATABASES'; $res = my_query($sql); // Результат нужно объявлять заранее $result = array(); // Проверка на валидность идентификатора запроса и количества строк, // которые вернул запрос if ( $res && mysql_affected_rows() ) { while ( $row = mysql_fetch_assoc($res) ) $result[] = $row; } ?> 3. Правило для конструирования запросов: при добавлении пользовательских данных в запрос, всегда использовать функцию mysql_real_escape_string() <? $sql = 'INSERT INTO `my_table` SET `id` = "'. mysql_real_escape_string($_POST['id']) .'"'; $sql = 'SELECT * FROM `my_table` WHERE `id` LIKE "'. mysql_real_escape_string($_GET['id']) .'%"'; ?> Подробнее http://anton-pribora.ru/articles/locales/index.php http://anton-pribora.ru/articles/php-common/index.php#php-ini-magic-quotes-gpc
Если здесь есть ошибки и опечатки, то они сделаны от всей души :P
HotLog ZG's counter Valid XHTML 1.1