Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не работает SQL запрос 
V
    Опции темы
0Z0NE
Дата 26.4.2012, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


HEY4
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 25.4.2012

Репутация: нет
Всего: нет



Доброго времени суток Уважаемые Знатоки. Я пока только учу PHP и MySQL поэтому наверняка где-то накосячил, вот только где понять не могу...

Проблема в следующем: есть страница с регистрацией пользователя, на ней форма с тремя полями ввода (имя пользователя, пароль и e-mail).
Код:
Код

<form action='register.php' method='post'>
    <table>
        <tr>
            <td>Логин:</td>
            <td><input type='text' name='login' /></td>
        </tr>
        <tr>
            <td>Ваш e-mail:</td>
            <td><input type='text' name='email' /></td>
        </tr>
        <tr>
            <td>Пароль:</td>
            <td><input type='password' name='password' /></td>
        </tr>
        <tr>
            <td></td>
            <td><input type='submit' value='Регистрация' /></td>
        </tr>
    </table>
</form>

далее все уходит на register.php
Код:
Код

$login_reg_danger = str_replace("'", "",$_POST['login']);
$login_reg_danger = str_replace("\"", "", $login_reg_danger);
$email_reg_danger = str_replace("'", "",$_POST['email']);
$email_reg_danger = str_replace("\"", "", $email_reg_danger);
$passw_reg_danger = str_replace("'", "",$_POST['password']);
$passw_reg_danger = str_replace("\"", "", $passw_reg_danger);
$login_reg = strtolower(trim($login_reg_danger, "\-!#,%/|?><=$&()^:;\\[]{}~` "));
$email_reg = strtolower(trim($email_reg_danger, "\-!#,%/|?><=$&()^:;\\[]{}~` "));
$passw_reg = strtolower(trim($passw_reg_danger, "\-!#,%/?|><=$&()^:;\\[]{}~` "));


$hash_login_reg = md5($login_reg);
$hash_passw_reg = md5($passw_reg);

$db = mysql_connect("localhost", "root", "");
$db_connect = mysql_select_db("user", $db) or die("Нет соединения с базой данных...");


mysql_query("INSERT INTO user_auth(user_name,user_pass,user_email) VALUES ('".$hash_login_reg."','".$hash_passw_reg."','".$email_reg."') LIMIT 0 , 1", $db) LIMIT 0 , 1", $db) or die("Ошибка записи...");
echo("Регистрация прошла успешно,<br /> Ваш логин:<b>".$login_reg."</b><br /><br /> Ваш e-mail:<b>".$email_reg."</b><br />Пароль:<b>".$passw_reg."</b><br />");


непонимаю почему но не хочет записывать в БД, не выводится никаких ошибок, попытки обнаружить ошибки с помощью команд ini_set и error_reporting также не увенчались успехом...

Это сообщение отредактировал(а) 0Z0NE - 26.4.2012, 16:56
PM MAIL   Вверх
krypt3r
Дата 26.4.2012, 05:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 9.6.2009

Репутация: 1
Всего: 16



Строковые значения в СУБД заключаются в апострофы.
Код
INSERT INTO ... LIMIT 0 , 1

 smile  smile 
PM MAIL   Вверх
0Z0NE
Дата 26.4.2012, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


HEY4
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 25.4.2012

Репутация: нет
Всего: нет



Цитата
Строковые значения в СУБД заключаются в апострофы.

Упс, спасибо) Но всеравно как ни странно не работает ... может SQL’ю вобще фиолетово на кавычки и дело совсем не в запросе?
Скоро спать плохо буду из-за этого кода будь ему неладно smile 
PM MAIL   Вверх
Fortop
Дата 26.4.2012, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 3
Всего: 42



Ошибку что ли выведите, которую он вам пишет.
А не ваше "Ошибка записи..."


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
0Z0NE
Дата 26.4.2012, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


HEY4
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 25.4.2012

Репутация: нет
Всего: нет



Если я стираю or die тогда скрипт регистрации радостно извещает что все успешно зарегистрированно, и выводит следующюю строку echo(...); ... но в БД как была одна строка так она и осталась...

Может дело в БД? на всякий случай вот экспорт БД из PHPMyAdmin:
Код

-- phpMyAdmin SQL Dump
-- version 3.5.0
-- http://www.phpmyadmin.net
--
-- Хост: localhost
-- Время создания: Апр 26 2012 г., 20:00
-- Версия сервера: 5.1.40-community
-- Версия PHP: 5.3.3

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- База данных: `user`
--

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

--
-- Структура таблицы `user_auth`
--

CREATE TABLE IF NOT EXISTS `user_auth` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(32) COLLATE utf8_bin NOT NULL,
  `user_pass` varchar(32) COLLATE utf8_bin NOT NULL,
  `user_email` varchar(32) COLLATE utf8_bin NOT NULL,
  PRIMARY KEY (`user_id`),
  UNIQUE KEY `user_id` (`user_id`),
  KEY `user_id_2` (`user_id`),
  KEY `user_id_3` (`user_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Данные для авторизации\\регистрации\\востановления пароля' AUTO_INCREMENT=28 ;

--
-- Дамп данных таблицы `user_auth`
--

INSERT INTO `user_auth` (`user_id`, `user_name`, `user_pass`, `user_email`) VALUES
(24, '21232f297a57a5a743894a0e4a801fc3', 'd8578edf8458ce06fbc5bb76a58c5ca4', '');

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;



Это сообщение отредактировал(а) 0Z0NE - 26.4.2012, 19:03
PM MAIL   Вверх
Fortop
Дата 26.4.2012, 19:16 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 3
Всего: 42



Пользуйтесь http://ua.php.net/mysql_error

после выполнения запроса


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
0Z0NE
Дата 26.4.2012, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


HEY4
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 25.4.2012

Репутация: нет
Всего: нет



За ссылку спасибо. Правда чем больше пытался что-то понять тем больше запутывался. При подставлении функции mysl_error(); после mysql_select_db выводит:
Цитата
Warning: mysqli_error() expects parameter 1 to be mysqli, boolean given in Z:\home\localhost\www\register.php on line 23
 
При переводе я так понял что не выбирается БД, но при команде echo($db_connect); выводится 1(я так понимаю 1-н значить соединение с БД есть), или я что-то не понял?
PM MAIL   Вверх
krypt3r
Дата 27.4.2012, 06:24 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 9.6.2009

Репутация: 1
Всего: 16



die() не нужно убирать — игнорирование обработки исключительных ситуаций === безграмотный коденг
Код

mysql_query ("MY F**CKING QUERY", $db) or die("Ошибка записи: " . mysql_error ($db));

Переменную $db можно не указывать, если скрипт работает с одним соединением с БД.
PS. А вообще переходите на PDO ;)
PM MAIL   Вверх
Fortop
Дата 27.4.2012, 08:07 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 3
Всего: 42



Разницу в типе драйвера видите?
Цитата(0Z0NE @  26.4.2012,  00:42 Найти цитируемый пост)
mysql_connect

Цитата(0Z0NE @  26.4.2012,  20:58 Найти цитируемый пост)
mysqli_error


Вот и используйте соответствующие функции для своего драйвера.
Я вам просто привел пример.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
0Z0NE
Дата 27.4.2012, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


HEY4
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 25.4.2012

Репутация: нет
Всего: нет



Цитата
Вот и используйте соответствующие функции для своего драйвера.

Да я понял что они разные, но... они выводят одно и то-же. после mysql_connect стоит:
Код

mysqli_error($db_connect);
echo(mysql_errno($db_connect).":".mysql_error($db_connect)."\n");
echo(mysqli_connect_errno($db_connect).":".mysqli_connect_error($db_connect)."\n");

в принципе все как в примере по Вашей ссылке, только с моими перемеными.
Выводят они следующее:
Цитата

Warning: mysqli_error() expects parameter 1 to be mysqli, boolean given in Z:\home\localhost\www\register.php on line 23

Warning: mysql_errno() expects parameter 1 to be resource, boolean given in Z:\home\localhost\www\register.php on line 24

Warning: mysql_error() expects parameter 1 to be resource, boolean given in Z:\home\localhost\www\register.php on line 24
: 0: Ошибка записи...


в конце концов плюнул, подумал что повторение мать учения и написал новый файлик, reg.php, где описал самые-самые необходимые для регистрации строки... ничего не получилось :(

Цитата
PS. А вообще переходите на PDO ;)

оооуу... как Видите у меня с MySQL с простыми запросами проблемы... а Вы говорите PDO ...

krypt3r  спасибо, заработало, во всем был виноват LIMIT, я почему-то думал что LIMIT можно использовать и во время процедуры вставки в БД, так сказать на всяк случай если вдруг кто-то попытается использовать форму регистрации для ипользования SQL иньекций ...



Всем Огромное спасибо за помощ ламеру)

Это сообщение отредактировал(а) 0Z0NE - 27.4.2012, 16:49
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0497 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.