Код:<?php
mysql_connect('localhost','root','1111');
mysql_select_db('reg');
$user_name = $_POST['user_name'];
$user_password = md5($_POST['user_password']);
$query="INSERT INTO users(user_name,user_password) values('$user_name','$user_password')";
mysql_query($query);
?>
при таком коде запись не добавляется в базу, а если использовать такую строку $user_password = $_POST['user_password']; то все работает.
Что то не то в md5, но что незнаю! Ребята подскажите, заранее спасибо!!!
Спустя 10 минут, 16 секунд (6.06.2007 - 16:03) TRIAL написал(а):
А что пишет? Ошибки есть какие?
У поля какие атрибуты стоят (тип, длина и т.д.)?
Вобще должно всё работать. Вроде в запросе ошибок никаких нет.
У поля какие атрибуты стоят (тип, длина и т.д.)?
Вобще должно всё работать. Вроде в запросе ошибок никаких нет.
Спустя 16 секунд (6.06.2007 - 16:03) md5 написал(а):
Цитата
Что то не то в md5
все темы, называющиеся "что-то не так в php", "что-то не так в md5" в конце концов окажутся в разделе PHP для слепых, глухих и т.д.
ты не пробовал вывести хэш до запроса?
может какие-нибудь ошибки выдаются?
может структуру таблицы покажешь?
http://phpfaq.ru/debug
Спустя 19 минут, 42 секунды (6.06.2007 - 16:23) Ghost написал(а):
какая длина у поля user_password в базе?
Спустя 6 минут, 55 секунд (6.06.2007 - 16:30) AlexBB написал(а):
Ваще первое, что делается в таких случаях это выводится запрос на печать и предпринимается попытка его выполнить напрямую.
Спустя 18 минут, 5 секунд (6.06.2007 - 16:48) TRIAL написал(а):
Это точно. Но так банально и не интересно. Куда приятнее всем моск поипать :)
А вобще уже реально надо учиться работать с БД через командную строку ну или хотя бы через тот же phpMyAdmin. Для отладки хорошо подходит да и порой пописать запросики вручную очень даже полезно )))
А вобще уже реально надо учиться работать с БД через командную строку ну или хотя бы через тот же phpMyAdmin. Для отладки хорошо подходит да и порой пописать запросики вручную очень даже полезно )))
Спустя 7 часов, 19 минут, 35 секунд (7.06.2007 - 00:07) Fidel написал(а):
to Trial: Ошибок никаких не пишет, таблица состоит из 3 столбцов (id (smallint(4) автоинкримент), user_name (varchar(40)), user_password (varchar(30))) И не нужно наезжать, никому мозг я фачить не собираюсь, работаю через командную строку, проверяю элементарным запросом, записи не добавляются если md5 использовать.
Если элементарно использовать эту функцию
<?php
print ("md5 of Kalmah is ".md5('Kalmah'));
?>
то все выводится должным образом.
Если элементарно использовать эту функцию
<?php
print ("md5 of Kalmah is ".md5('Kalmah'));
?>
то все выводится должным образом.
Спустя 14 минут, 41 секунда (7.06.2007 - 00:22) Ghost написал(а):
user_password (varchar(30))
а сколько должно быть
, а?
а сколько должно быть

Спустя 45 минут, 43 секунды (7.06.2007 - 01:08) Fidel написал(а):
всмысле сколько должно быть??? Я что то непонимаю!!
Спустя 7 часов, 6 минут, 28 секунд (7.06.2007 - 08:14) TRIAL написал(а):
хаха, поставил я себе как то на мд5 в таблице варчар30 ))) Пол дня на базу матом орал какого у меня пароли не сходятся :) Потом осинило :)
Спустя 6 минут, 53 секунды (7.06.2007 - 08:21) Fidel написал(а):
Ну колись, в чем тут дело? Не томи

Спустя 2 минуты, 52 секунды (7.06.2007 - 08:24) TRIAL написал(а):
Вобще незнаю насколько это актуально в твоем случае...
Ты кстати никогда не смотрел сколько симолов выдает мд5(). Ради прикола посчитай ;)
Ты кстати никогда не смотрел сколько симолов выдает мд5(). Ради прикола посчитай ;)
Спустя 25 минут, 8 секунд (7.06.2007 - 08:49) Fidel написал(а):
Да считал, сейчас на вскидку и не вспомню, посмотреть нужно, вроде 12 или 16. Т.е. как я понял нужно делать длину поля = той что генерирует md5?
А тип varchar? Или и это неправильно?
А тип varchar? Или и это неправильно?
Спустя 10 минут, 5 секунд (7.06.2007 - 08:59) TRIAL написал(а):
Да, и правда ты очень давно считал. 12 или 16 это конечно мощно :)
Ладно, мучить тебя не буду, смотрю считать сново тебе всетаки влом. В общем мд5 выдает 32 знака и они в твои 30 ну никак не поместятся.
Для поля оставь варчар(32).
Кстати даже при поле длиною в 30 знаков в него хш всё равно будет записываться, только последние 2 знака будут отсекаться. Это происходит или нет?
Если не происходит, то тупо береш хэш и вставляешь его в конкретный запрос, т.е. insert into table(pass) values("хэш"). без всяких мд5()
Ладно, мучить тебя не буду, смотрю считать сново тебе всетаки влом. В общем мд5 выдает 32 знака и они в твои 30 ну никак не поместятся.
Для поля оставь варчар(32).
Кстати даже при поле длиною в 30 знаков в него хш всё равно будет записываться, только последние 2 знака будут отсекаться. Это происходит или нет?
Если не происходит, то тупо береш хэш и вставляешь его в конкретный запрос, т.е. insert into table(pass) values("хэш"). без всяких мд5()
Спустя 20 минут, 35 секунд (7.06.2007 - 09:20) Fidel написал(а):
)) Мне почему то показалось, что там заков 16)) Мой глазомер меня подвел))
Нет в поле ничего не записывается, вернее в строку, т.к. не только user_password но и даже user_name не записывается.
Так если тупо вставлять, то все равно хеш где-то сгенерировать нужно.
Нет в поле ничего не записывается, вернее в строку, т.к. не только user_password но и даже user_name не записывается.
Так если тупо вставлять, то все равно хеш где-то сгенерировать нужно.
Спустя 34 минуты, 18 секунд (7.06.2007 - 09:54) zaxar написал(а):
Попробуй заменить строку
$query="INSERT INTO users(user_name,user_password) values('$user_name','$user_password')";
на
$query="INSERT INTO users values('','$user_name','$user_password')";
$query="INSERT INTO users(user_name,user_password) values('$user_name','$user_password')";
на
$query="INSERT INTO users values('','$user_name','$user_password')";
Спустя 27 минут, 37 секунд (7.06.2007 - 10:22) Fidel написал(а):
а в $query="INSERT INTO users values('','$user_name','$user_password')"; в скобках ", перед $user_name - это для чего??
Спустя 1 час, 36 минут, 53 секунды (7.06.2007 - 11:59) TRIAL написал(а):
"", - это ты нулевое значение отсылаешь для поля id, чтоб сработал auto_increment.
А вобще лучше всего попробуй сделать так $query="INSERT INTO users values('','user_name','user_password')";
где user _name и _password непосредственно текст а не переменные. Просто проверь хоть они то добавятся или нет. если нед обавятся значит у тебя тупо конекта к базе нет.
А вобще лучше всего попробуй сделать так $query="INSERT INTO users values('','user_name','user_password')";
где user _name и _password непосредственно текст а не переменные. Просто проверь хоть они то добавятся или нет. если нед обавятся значит у тебя тупо конекта к базе нет.
Спустя 5 минут, 12 секунд (7.06.2007 - 12:04) Fidel написал(а):

Ну тем не менее спасибо за совет!
Спустя 16 минут, 38 секунд (7.06.2007 - 12:20) TRIAL написал(а):
если всё нормально без мд5() то сделай следующее
и запости тут что выдаст echo
Код
$query = "INSERT INTO users(user_name,user_password) values('".$_POST['user_name']."','".md5($_POST['user_password']),"')";
echo $query;
echo $query;
и запости тут что выдаст echo
Спустя 13 минут, 10 секунд (7.06.2007 - 12:34) zaxar написал(а):
Цитата
а в $query="INSERT INTO users values('','$user_name','$user_password')"; в скобках ", перед $user_name - это для чего??
Только там не кавычки, а два апострофа.
Я ради эксперимента создал такую же таблицу, и твой запрос у меня тупо не прошел. А мой сработал. Странно...
Так что, попробуй.
Спустя 9 часов, 52 минуты, 33 секунды (7.06.2007 - 22:26) Fidel написал(а):
Ура, товарищи!! Заработало, причем первоначальная конструкция!! Проблема оказалось всего навсего в том, что в для user_password varchar(30) был, изменил на 32, и все заработало!!! Глупый недочет вообщем!! Всем огромное спасибо!!!!
Спустя 4 года, 8 месяцев, 27 дней, 23 часа, 7 минут, 7 секунд (5.03.2012 - 21:33) Pride_St написал(а):
Проверь кодировки, вполне вероятно, что при несовпадении кодировок md5 вместо 15 символов сразу 30 становится. Это случается при несовпадении кодировки сайта и базы данных. Проблема решается принудительноым указанием кодировки в которой работать с базой следующими командами:
//Указываем кодитровку
//В качестве параметра тебе нужно указать твою кодировку базы данных
mysql_query("SET NAMES 'latin1'");
mysql_query("SET CHARACTER SET 'latin1'");
эти команды указываются единожды за сеанс работы с бд. перед записью
//Указываем кодитровку
//В качестве параметра тебе нужно указать твою кодировку базы данных
mysql_query("SET NAMES 'latin1'");
mysql_query("SET CHARACTER SET 'latin1'");
эти команды указываются единожды за сеанс работы с бд. перед записью
_____________