Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Поиск дает неверный результат
 
 автор: Unkind™   (29.08.2006 в 02:41)   письмо автору
 
 

Ерунда какая-то...В общем пытаюсь найти в таблице пользователя по нику, ввожу один (даже через phpMyAdmin), но мне выдает совершенно другой...=/

Что может быть? Не знаете? =/

"Поиском" называю в данном случае всего лишь

<?php
$sql 
mysql_query("SELECT * FROM `chat_users` WHERE `nickname` = '".$nickname."';");
?>



CREATE TABLE `chat_users` (
  `id` int(11) unsigned NOT NULL auto_increment,
  `nickname` tinytext NOT NULL,
  `password` tinytext NOT NULL,
  `ip` tinytext NOT NULL,
  `ua` text NOT NULL,
  `level` tinyint(1) NOT NULL default '0',
  `photo` tinytext NOT NULL,
  `invisible` tinyint(1) NOT NULL default '0',
  `status` tinytext NOT NULL,
  `kick` int(11) unsigned NOT NULL default '0',
  `moder` tinytext NOT NULL,
  `reason` text NOT NULL,
  `ban` tinyint(1) NOT NULL default '0',
  `name` tinytext NOT NULL,
  `sex` tinyint(1) NOT NULL default '0',
  `email` text NOT NULL,
  `site` text NOT NULL,
  `birthday` tinytext NOT NULL,
  `from` text NOT NULL,
  `mobile` tinytext NOT NULL,
  `about` text NOT NULL,
  `posts` int(11) NOT NULL default '0',
  `answers` int(11) NOT NULL default '0',
  `gbalans` int(11) NOT NULL default '0',
  `smiles` tinyint(1) NOT NULL default '1',
  `translit` tinyint(1) NOT NULL default '0',
  `msgs` tinyint(2) NOT NULL default '5',
  `refresh` tinyint(3) unsigned NOT NULL default '20',
  `fsize` tinyint(1) NOT NULL default '1',
  `security` tinyint(1) NOT NULL default '1',
  `place` mediumint(9) NOT NULL default '0',
  `time` int(11) unsigned NOT NULL default '0',
  `intim` int(11) unsigned NOT NULL default '0',
  `key` tinytext NOT NULL,
  `regdate` tinytext NOT NULL,
  `hidden` tinyint(1) NOT NULL default '0',
  `mood` tinyint(2) NOT NULL default '0',
  `emotions` tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM ;

   
 
 автор: RV   (29.08.2006 в 04:52)   письмо автору
 
   для: Unkind™   (29.08.2006 в 02:41)
 

а зачем точка с запятой в конце? в мануале по этому поводу сказано довольно точно.

$sql = mysql_query("SELECT * FROM `chat_users` WHERE `nickname` = " . $nickname); 

попробуйте так

   
 
 автор: Loki   (29.08.2006 в 10:04)   письмо автору
 
   для: RV   (29.08.2006 в 04:52)
 

Эта... а кавычки вокруг текстовой переменной отменили уже?

   
 
 автор: RV   (29.08.2006 в 11:34)   письмо автору
 
   для: Loki   (29.08.2006 в 10:04)
 

ковычки, текстовые переменные. кошмар.
плейсхолдеры для кого придумали. давно пора писать код более читабельным.
а этот написан для примера.

   
 
 автор: Loki   (29.08.2006 в 12:51)   письмо автору
 
   для: RV   (29.08.2006 в 11:34)
 

а каким местом плейсхолдеры к sql запросам относятся?

   
 
 автор: RV   (29.08.2006 в 12:58)   письмо автору
 
   для: Loki   (29.08.2006 в 12:51)
 

самым передним или самым главным. я незнаю как правильней.

   
 
 автор: Loki   (29.08.2006 в 13:09)   письмо автору
 
   для: RV   (29.08.2006 в 12:58)
 

Не покажете на примере, как запрос с ошибкой

SELECT * FROM `chat_users` WHERE `nickname` = имя

превращается в запрос без ошибки?

SELECT * FROM `chat_users` WHERE `nickname` = 'имя'

При помощи плейсхолдеров, понятное дело.

   
 
 автор: RV   (29.08.2006 в 13:14)   письмо автору
 
   для: Loki   (29.08.2006 в 13:09)
 


<?
sql_placeholder
('SELECT * FROM chat_users WHERE nickname = ?'$_POST['nickname']); 
?>

   
 
 автор: Loki   (29.08.2006 в 13:15)   письмо автору
 
   для: RV   (29.08.2006 в 13:14)
 

теперь попробуйте это скормить БД
и, кстати, как выглядит итоговый запрос?

   
 
 автор: RV   (29.08.2006 в 13:20)   письмо автору
 
   для: Loki   (29.08.2006 в 13:15)
 

что значит скормить бд?

<?
$_POST
['nickname'] = "Vasia";
echo 
sql_placeholder('SELECT * FROM chat_users WHERE nickname = ?'$_POST['nickname']);  
?>
SELECT * FROM chat_users WHERE nickname = 'Vasia'

   
 
 автор: Loki   (29.08.2006 в 13:38)   письмо автору
 
   для: RV   (29.08.2006 в 13:20)
 

теперь сравните ваше

$sql = mysql_query("SELECT * FROM `chat_users` WHERE `nickname` = " . $nickname);  

и

SELECT * FROM chat_users WHERE nickname = 'Vasia'

пальцем тыкать?

   
 
 автор: RV   (29.08.2006 в 13:43)   письмо автору
 
   для: Loki   (29.08.2006 в 13:38)
 

пальцем тыкай себе.
покажите что вас не устраивает.

   
 
 автор: Loki   (29.08.2006 в 13:55)   письмо автору
 
   для: RV   (29.08.2006 в 13:43)
 

то что mysql не примет параметр без кавычек и выдаст ошибку

ps и на "ты" мы пока не переходили

   
 
 автор: RV   (29.08.2006 в 14:05)   письмо автору
 
   для: Loki   (29.08.2006 в 13:55)
 

может у меня mysql не тот или у хостера не тот? всю жизнь принимал и давал что надо

   
 
 автор: Loki   (29.08.2006 в 14:09)   письмо автору
 
   для: RV   (29.08.2006 в 14:05)
 

Только что проверил - не работает.
MySQL 4.1.14

Кроме того, не очень понятно как должны обрабатываться запросы с пробелами в параметре?

   
 
 автор: RV   (29.08.2006 в 14:14)   письмо автору
 
   для: Loki   (29.08.2006 в 14:09)
 

например

   
 
 автор: Loki   (29.08.2006 в 14:17)   письмо автору
 
   для: RV   (29.08.2006 в 14:14)
 

SELECT * FROM chat_users WHERE nickname = Vasya Pupkin


Да вы не верьте мне на слово - возьмите phpmyadmin и попробуйте сами;)

   
 
 автор: RV   (29.08.2006 в 14:24)   письмо автору
 
   для: Loki   (29.08.2006 в 14:17)
 

вы точно внимательно смотрели?

SELECT * FROM chat_users WHERE nickname = 'Vasia' 

Видите 'Vasia' в кавычках?

   
 
 автор: Loki   (29.08.2006 в 15:12)   письмо автору
 
   для: RV   (29.08.2006 в 14:24)
 

автор: RV (29.08.2006 в 04:52)

   
 
 автор: RV   (29.08.2006 в 15:45)   письмо автору
 
   для: Loki   (29.08.2006 в 15:12)
 

что?

   
 
 автор: Trianon   (29.08.2006 в 09:26)   письмо автору
 
   для: Unkind™   (29.08.2006 в 02:41)
 

а что в $nickname?
Какой ник Вы ищете и какой при этом выдается?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования