Не выбирается строка из MYSQL

Onu

Новичок
Не выбирается строка из MYSQL

Есть бд:
id----url----url_cat
В ней строка
PHP:
'1','http://www.phpclub.ru/','http://phpclub.ru/1/2/WTFq2/4/5/'
Использую:
PHP:
Select * from yaca where id=1;
получаю в ответ строку

Использую:
PHP:
Select * from yaca where url='http://www.phpclub.ru/';
получаю в ответ строку

Использую:
PHP:
Select * from yaca where url_cat='http://phpclub.ru/1/2/WTFq2/4/5/';
в ответ - пустота, хотя строка точно есть.

Пробовал эти же запросы в phpmyadmin, напрямую копируя содержимое колонки url_cat и вставляя его в запрос - аналогично.
Помогает лишь запрос:
PHP:
Select * from yaca where url_cat like 'http://phpclub.ru/1/2/WTFq2/4/5/%';
- мне такой запрос не годится потому, что существует продолжение категорий.

P.s. прежде чем пихать в базу - обрезал все URL, к тому же напрямую в PhpMyAdmin копировал результат - нету пробелов. С чем может быть связано ?:confused:
 

svetasmirnova

маленький монстрик
Приведи пожалуйста вывод [sql]SHOW CREATE TABLE yaca[/sql]

И какая версия MySQL?
 

Onu

Новичок
CREATE TABLE `yaca` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`url` varchar(255) NOT NULL default '',
`url_cat` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`),
UNIQUE KEY `url` (`url`)
)

INSERT INTO `yaca` VALUES(1, 'http://www.phpclub.ru/', 'http://phpclub.ru/1/2/WTFq2/4/5/');

# Apache 2.2.4
# PHP 5.2.3
# MySQL 5.0.45
 

svetasmirnova

маленький монстрик
Не воспроизводится. При использовании mysql command line client тоже ничего не возвращается?
 

Onu

Новичок
svetasmirnova
Через него и работаю. PhpMyAdmin был как запасной вариант, причем на работе использую туже сборку и тоже не выбирается, хотя у знакомого, используещего мою эту сборку - все выбирается на ура - что дома, что на работе.
Возможно, баг MYSQL какой-то ? Или что-то с регистрозависимостью...какой это параметр в mysql?
 

wildarp

Новичок
а попробуй всю строку http://phpclub.ru/1/2/WTFq2/4/5/ перевести в нижний регистр и попробовать выборку также в нижнем регистре
 

svetasmirnova

маленький монстрик
Farsh
ты о чём?

Onu
Приведи вывод именно SHOW CREATE TABLE: там информация о кодировке будет, SHOW VARIABLES LIKE 'CHAR%' И SHOW VARIABLES LIKE 'COLL%';

Ещё можно CHECK TABLE сделать, чтобы убедиться, что таблица не повреждена.

> Через него и работаю. PhpMyAdmin был как запасной вариант, причем на работе использую туже сборку и тоже не выбирается, хотя у знакомого, используещего мою эту сборку - все выбирается на ура - что дома, что на работе.

А у тебя проблема воспроизводится, если таблицу создать заново и INSERT только эту строчку?
 

Onu

Новичок
Автор оригинала: svetasmirnova
Приведи вывод именно SHOW CREATE TABLE: там информация о кодировке будет, SHOW VARIABLES LIKE 'CHAR%' И SHOW VARIABLES LIKE 'COLL%';

PHP:
| yaca  | CREATE TABLE `yaca` (
  `id` int(10) NOT NULL auto_increment,
  `url` varchar(255) NOT NULL default '',
  `url_cat` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `url` (`url`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
Ещё можно CHECK TABLE сделать, чтобы убедиться, что таблица не повреждена.
PHP:
+----------------+-------+----------+----------+
| Table          | Op    | Msg_type | Msg_text |
+----------------+-------+----------+----------+
| yaca_full.yaca | check | status   | OK       |
+----------------+-------+----------+----------+

А у тебя проблема воспроизводится, если таблицу создать заново и INSERT только эту строчку?
Именно там и делал - для чистоты эксперимента.
 

Onu

Новичок
PHP:
+--------------------------+----------------------------------------------------
-----+
| Variable_name            | Value
     |
+--------------------------+----------------------------------------------------
-----+
| character_set_client     | utf8
     |
| character_set_connection | utf8
     |
| character_set_database   | latin1
     |
| character_set_results    | utf8
     |
| character_set_server     | latin1
     |
| character_set_system     | utf8
     |
| character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.0\share\chars
ets\ |
+--------------------------+----------------------------------------------------
-----+
PHP:
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | utf8_general_ci   |
| collation_database   | latin1_swedish_ci |
| collation_server     | latin1_swedish_ci |
+----------------------+-------------------+
Хм...если задать везде одинаковые, думаете, сработает ? :о)
 

Mols

Новичок
Вообще похоже, что там символ который просто не видно. Посмотрите длину этой строки через strlen
 

Alexandre

PHPПенсионер
Вообще похоже, что там символ который просто не видно. Посмотрите длину этой строки через strlen
+1
Код:
mysql> select * from yaca where url_cat='http://phpclub.ru/1/2/WTFq2/4/5/';
+----+------------------------+----------------------------------+
| id | url                    | url_cat                          |
+----+------------------------+----------------------------------+
|  1 | [url]http://www.phpclub.ru/[/url] | [url]http://phpclub.ru/1/2/WTFq2/4/5/[/url] |
+----+------------------------+----------------------------------+
1 row in set (0.00 sec)
посмотри запросом: [sql]SELECT length( url_cat), length('http://phpclub.ru/1/2/WTFq2/4/5/') from yaca where id=1;[/sql]
Код:
+------------------+--------------------------------------------+
| length( url_cat) | length('http://phpclub.ru/1/2/WTFq2/4/5/') |
+------------------+--------------------------------------------+
|               32 |                                         32 |
+------------------+--------------------------------------------+
 

svetasmirnova

маленький монстрик
> Хм...если задать везде одинаковые, думаете, сработает ? :о)

Нет, с приведёнными всё должно работать корректно.

Вообще похоже там и правда лишний символ как уже ответил Mols
 

Onu

Новичок
svetasmirnova
Alexandre
Mols
Символ невидимый обнаружился, лишний :eek:
Какие способы еще есть кроме rtrim и регулярки ?
 

OnlyRu

Новичок
Onu

странный вообще запрос! скажи когда ты его выводишь ты же где-то должен получить этот http://phpclub.ru/1/2/WTFq2/4/5/
если ты достаёшь url_cat для формирования ссылки на каталог то, просто используй `id`после того как получил `url` и не парься...

PHP:
$sql = "select `url_cat` from `[имя базы]` where `id` = '[номер id]' ;";
а если более детально то, у тебя эта переменная уже есть в самом первом запросе...
зачем её снова запрашивать...

P.S. если не понял сути прошу прощения, утро...
 
Сверху