Ru-Board.club
← Вернуться в раздел «Web-программирование»

» Как сделать sql запрос, для проверки наличия строки в базе

Автор: usertum
Дата сообщения: 12.03.2009 12:15
Нужно сделать запрос в базу из php для проверки наличия пользователя test, в идеале хочу что бы скрипт выдал "Запись уже есть" или "Запись отсудствует", ниже картинка структуры БД. $username переменная передает имя пользователя.



Добавлено:
PS, в базе имя пользователя хранится в "username" а переменная $username или $uname, то есть разные. Возможно важно.
Автор: Cheery
Дата сообщения: 12.03.2009 17:14
usertum
Ошибку в названии темы не видим?

подключаетесь.
делаете
SELECT * FROM tablename WHERE username='$username'
и если возвращается не пустой ответ, значит есть уже запись с таким именем
Автор: usertum
Дата сообщения: 12.03.2009 19:59
Cheery можно php пример для моего класса, просто новичек в php.

Добавлено:
Думаю что как то так,

$my_db = new sql_db(localhost, root, vertrigo, test, false);
$my_db->sql_query("SELECT * FROM tablename WHERE username='$username' ");

Вопрос как вывести сообщение, и как дописать пример.
Автор: Cheery
Дата сообщения: 12.03.2009 20:05
usertum

Цитата:
можно php пример для моего класса, просто новичек в php

$db=new sql_db(с указанными параметрами подключения);
$db->sql_query("SELECT * FROM tablename WHERE username='$username'");
$rows=$db->sql_numrows()
вот смотрите $rows
если 0, значит нет в базе записи.. если не 0, значит есть
и не вздумайте использовать $username напрямик из формы


Цитата:
Вопрос как вывести сообщение, и как дописать пример.

if ($rows==0)
{
echo "Нет записи";
}
else
{
echo "Есть запись";
}
Автор: usertum
Дата сообщения: 12.03.2009 20:23
Не работает
Автор: Cheery
Дата сообщения: 12.03.2009 20:24
usertum

Цитата:
Не работает


Цитата:
$db->sql_query("SELECT * FROM ofuser WHERE username='test'");


ps: еще раз - исправьте ошибку в названии темы
Автор: usertum
Дата сообщения: 12.03.2009 20:29
и не вздумайте использовать $username напрямик из формы - можно подробнее?
Автор: Cheery
Дата сообщения: 12.03.2009 20:30
usertum

Цитата:
и не вздумайте использовать $username напрямик из формы - можно подробнее?

www.php.net/mysql_real_escape_string + читать про SQL инъекции
Автор: usertum
Дата сообщения: 12.03.2009 20:50
Cheery, спасибо большое вам. Будут еше вопросы тут напишу, если вас не затруднит на них ответить.

Вы написали в разных примерах if ($rows==0) или if ($rows=0).
Если == то выводит всегда нет записи, если = то выводит всегда есть запись, даже если она отсутствует.
Автор: Cheery
Дата сообщения: 12.03.2009 21:19
usertum

Цитата:
$db->sql_query("SELECT ofUser FROM tablename WHERE username='test'");

я же написал вам синтаксис. tablename - имя таблицы.


Цитата:
Вы написали в разных примерах if ($rows==0) или if ($rows=0).
Если == то выводит всегда нет записи, если = то выводит всегда есть запись, даже если она отсутствует.

одно = это неправильное условие. условие сравнения всегда ==

вы убрали описание класса - как я что то подскажу?
возможно данные для коннекта неправильные
Автор: usertum
Дата сообщения: 12.03.2009 21:21
Спасибо, заработало!
Автор: Cheery
Дата сообщения: 12.03.2009 21:24
usertum
временно замените
$this->query_result = @mysql_query($query, $this->db_connect_id);
на
$this->query_result = @mysql_query($query, $this->db_connect_id) or die(mysql_error());
и читайте сообщение, если будет
Автор: usertum
Дата сообщения: 13.03.2009 11:03
Еше один вопрос, как теперь этот вариант будет выглядеть в безопасном варианте?

Добавлено:
("SELECT * FROM ofUser WHERE username='".mysql_real_escape_string($uname)."'");

Верно?
Автор: Cheery
Дата сообщения: 13.03.2009 19:59
usertum

Цитата:
Верно?

почти. все зависит от того, откуда берется $uname и включены ли magic_quotes
Автор: usertum
Дата сообщения: 16.03.2009 21:04
Еше вопрос, как удалить запись из БД, Запрос: DELETE FROM ofuser WHERE nаmе=`test` ? Не хочет Структура на скрине выше, могу в .sql выложить.
Автор: Cheery
Дата сообщения: 16.03.2009 21:16
usertum

Цитата:
Не хочет

что значит "не хочет"? какое сообщение об ошибке?

Цитата:
nаmе

и username - разные вещи
Автор: usertum
Дата сообщения: 16.03.2009 21:42

Цитата:
nаmе
- спасибо, исправил.
Автор: usertum
Дата сообщения: 09.04.2009 23:20
Еше вопросик,

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for ibf_members
-- ----------------------------
CREATE TABLE `ibf_members` (
`id` mediumint(8) NOT NULL default '0',
`name` varchar(255) NOT NULL default '',
`mgroup` smallint(3) NOT NULL default '0',
`email` varchar(150) NOT NULL default '',
`joined` int(10) NOT NULL default '0',
`ip_address` varchar(16) NOT NULL default '',
`posts` mediumint(7) default '0',
`title` varchar(64) default NULL,
`allow_admin_mails` tinyint(1) default NULL,
`time_offset` varchar(10) default NULL,
`hide_email` varchar(8) default NULL,
`email_pm` tinyint(1) default '1',
`email_full` tinyint(1) default NULL,
`skin` smallint(5) default NULL,
`warn_level` int(10) default NULL,
`warn_lastwarn` int(10) NOT NULL default '0',
`language` varchar(32) default NULL,
`last_post` int(10) default NULL,
`restrict_post` varchar(100) NOT NULL default '0',
`view_sigs` tinyint(1) default '1',
`view_img` tinyint(1) default '1',
`view_avs` tinyint(1) default '1',
`view_pop` tinyint(1) default '1',
`bday_day` int(2) default NULL,
`bday_month` int(2) default NULL,
`bday_year` int(4) default NULL,
`new_msg` tinyint(2) default '0',
`msg_total` smallint(5) default '0',
`show_popup` tinyint(1) default '0',
`misc` varchar(128) default NULL,
`last_visit` int(10) default '0',
`last_activity` int(10) default '0',
`dst_in_use` tinyint(1) default '0',
`view_prefs` varchar(64) default '-1&-1',
`coppa_user` tinyint(1) default '0',
`mod_posts` varchar(100) NOT NULL default '0',
`auto_track` varchar(50) default '0',
`temp_ban` varchar(100) default '0',
`sub_end` int(10) NOT NULL default '0',
`login_anonymous` char(3) NOT NULL default '0&0',
`ignored_users` text,
`mgroup_others` varchar(255) NOT NULL default '',
`org_perm_id` varchar(255) NOT NULL default '',
`member_login_key` varchar(32) NOT NULL default '',
`member_login_key_expire` int(10) NOT NULL default '0',
`subs_pkg_chosen` smallint(3) NOT NULL default '0',
`has_blog` tinyint(1) NOT NULL default '0',
`has_gallery` tinyint(1) NOT NULL default '0',
`members_markers` text,
`members_editor_choice` char(3) NOT NULL default 'std',
`members_auto_dst` tinyint(1) NOT NULL default '1',
`members_display_name` varchar(255) NOT NULL default '',
`members_created_remote` tinyint(1) NOT NULL default '0',
`members_cache` mediumtext,
`members_disable_pm` int(1) NOT NULL default '0',
`members_l_display_name` varchar(255) NOT NULL default '0',
`members_l_username` varchar(255) NOT NULL default '0',
`failed_logins` text,
`failed_login_count` smallint(3) NOT NULL default '0',
`members_profile_views` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `members_l_display_name` (`members_l_display_name`),
KEY `members_l_username` (`members_l_username`),
KEY `mgroup` (`mgroup`),
KEY `bday_day` (`bday_day`),
KEY `bday_month` (`bday_month`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- ----------------------------
-- Records
-- ----------------------------
INSERT INTO `ibf_members` VALUES ('5', 'test2', '3', 'test2@test2.ru', '1239290936', '127.0.0.1', '0', null, null, null, null, '1', null, null, null, '0', 'russian', null, '0', '1', '1', '1', '1', null, null, null, '0', '0', '0', null, '1239290943', '1239290943', '1', '-1&-1', '0', '0', '0', '0', '0', '0&1', null, '', '', '3fe2adefe2c40d92e1d2175baf3f8323', '1239895743', '0', '0', '0', null, 'std', '1', 'test2', '0', null, '0', 'test2', 'test2', null, '0', '0');
INSERT INTO `ibf_members` VALUES ('6', 'test3', '3', 'test3@test3.ru', '1239291053', '127.0.0.1', '0', null, null, null, null, '1', null, null, null, '0', 'russian', null, '0', '1', '1', '1', '1', null, null, null, '0', '0', '0', null, '1239306769', '1239306769', '0', '-1&-1', '0', '0', '0', '0', '0', '0&0', null, '', '', 'cbfc6955d77c551b554e1f931de53e11', '1239911569', '0', '0', '0', null, 'std', '1', 'test3', '0', null, '0', 'test3', 'test3', '', '0', '1');

Переменная $user задает имя пользователя, как нужно сделать запрос что бы переменной $id задать id пользователя, имя которого заданно в $user.

Пример, $user = test2, его id в таблице 5, как получить id из бд и задать ему переменнeею $id.

Если не понятно написал то скажите...
Автор: Cheery
Дата сообщения: 10.04.2009 01:24
usertum
$res=mysql_query("select * from ibf_members where name='$user'") or die(mysql_error());
$data=mysql_fetch_assoc($res);
echo $data['id'];
Автор: usertum
Дата сообщения: 15.04.2009 23:15
Еше вопрос, пароль cms хранится в базе mysql в зашифрованном виде, вро ди кэш md5. Как проверить правильность введенного пользователем пароля из стороннего приложения в базе cms?
Автор: Cheery
Дата сообщения: 15.04.2009 23:47
usertum

Цитата:
Как проверить правильность введенного пользователем пароля из стороннего приложения в базе cms?

вот когда будет не
Цитата:
вро ди

а точно, тогда и скажем.. смотрите код cms как пароль шифруется. там же можно и проверку посмотреть
Автор: usertum
Дата сообщения: 15.04.2009 23:54
Выглядит пароль test:098f6bcd4621d373cade4e832627b4f6
Шифрование md5.
Автор: Cheery
Дата сообщения: 15.04.2009 23:59
usertum

Цитата:
Если то

ну вот и посмотрите функцию sl и делайте аналогично проверку.
по логину запросили пароль из базы.. зашифровали тот, что из формы, проверили
Автор: usertum
Дата сообщения: 16.04.2009 00:07
Это не совсем то я написал... Шас я хочу другой скрипт, находится в другом месте что бы проверял имя пользователя и пароль из базы cms. Cms хранит пароль в md5. Если написать пароль без шифрования то у меня все отлично, но как проверять шифрованный пароль, мне пока не понятно.
Автор: Cheery
Дата сообщения: 16.04.2009 00:08
usertum

Цитата:
Это не совсем то я написал... Шас я хочу другой скрипт, находится в другом месте что бы проверял имя пользователя и пароль из базы cms

это как раз то, что вы написали.
либо используете функции CMS либо делаете свой запрос в базу по имени пользователя.
из запроса вытаскиваете хэш пароля.. шифруете тот, что ввел пользователь из формы аналогичным способом и сравниваете
Автор: usertum
Дата сообщения: 16.04.2009 00:43
Извините, можно пример? Я пока на примерах все делаю...
Автор: Cheery
Дата сообщения: 16.04.2009 00:49
usertum

Цитата:
Извините, можно пример?

я не совсем понимаю пример чего? запроса к базе ? или как сравнивать два значения?
вы не усваиваете того, что вам говорили ранее..
mysql_query("SELECT * FROM ofUser WHERE username='".mysql_real_escape_string($uname)."'")
это уже было..
как получить данные (пароль) из ответа
Как сделать sql запрос, для проверки наличия строки в базе
тоже было.

как зашифровать пароль переданные пользователем из формы - только что спросили.. ну, и в чем еще может проблема то быть?
Автор: usertum
Дата сообщения: 16.04.2009 00:54
Как зашифровать пароль я спросил, про sql я все усвоил уже. И без шифрованного пароля все работает
Автор: Cheery
Дата сообщения: 16.04.2009 00:55
usertum

Цитата:
Как зашифровать пароль я спросил

повторю еще раз - так же, как шифруется и в самой CMS.. ну что тут непонятно то?
если md5, то так и шифруете, с помощью md5
$pass=md5('пароль_из_формы');
Автор: usertum
Дата сообщения: 18.11.2009 17:39
Здравствуйте. Подскажите пожалуйста, как вывести на сайт значение поля Plainpassword для пользователя test, картинка структуры бд на первой страницы. Большое спасибо за ранее.

Страницы: 123

Предыдущая тема: Новости из мира вебпрограмминга


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.