IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   MySQl и запрос (http://www.imho.ws/showthread.php?t=65082)

shuron 27.07.2004 00:41

MySQl и запрос
 
привет всем...
сталкнулся с такой проблемой что с русскими параметрами
вот такой запрос не срабатывыет

SELECT username FROM user WHERE username='косой'

косой в баже точно есть
А
SELECT username FROM user WHERE username='shuron'
срабытывает как и полодено...

Почему MySQL неможет Where с русскими параметрами исполнить?
Как это исправить?

Sheryld 27.07.2004 00:50

А кодировка какая?

shuron 27.07.2004 01:11

Кодировка где?
ааа. думаешь от несовпадения кодировок...
даже не знаю как посмотреть ..:(

Вот так это точно выглядит..
$username из формы получаю

$result = $db->query('SELECT username FROM user WHERE username=\''.addslashes($username).'\' OR username=\''.addslashes(preg_replace('/[^\w]/', '', $username)).'\'')

Кстати что делает preg_replace('/[^\w]/', '', $username)?

Если пробую из phpMyAdmin
тоже самое..

AleXXXSoft 27.07.2004 03:29

прег удаляет из юзернейма все символы кроме тех, что образуют слово

хинт: не пользуй addslashes - для мускула, имхо не очень... есть специальная функция mysql_escape_string

и еще, узнай, в какой кодировке передается параметр из формы, и в какой хранится в базе...

is_absent 27.07.2004 09:37

Цитата:

shuron:
думаешь от несовпадения кодировок...
даже не знаю как посмотреть
show variables like '%char%'

Цитата:

AleXXXSoft:
прег удаляет из юзернейма все символы кроме тех, что образуют слово
там ни плюсика ни звездочки нет... только первый символ и проверит.. или я не проснулся еще? :)

AleXXXSoft 28.07.2004 02:51

нет, не только первый символ... где ты там видишь признак начала строки?

is_absent 28.07.2004 06:32

AleXXXSoft
не проснулся ещё. виноват. неправ...

dacuan 28.07.2004 11:34

А если для проверки сделать

var_dump(preg_replace('/[^\w]/', '', $username));

Или

var_dump(preg_replace('/[^\w]/', '', 'косой'));

Есть у меня подозрение, что preg удаляет все русские символы.

AleXXXSoft 28.07.2004 11:38

если локализация в ПХП не работает, тогда действительно он будет удалять русские буквы как символы, не составляющие слова.

shuron 30.07.2004 16:39

Цитата:

Сообщение от is_absent
show variables like '%char%'

Не понял что с этм делать?

Цитата:

Сообщение от AleXXXSoft
если локализация в ПХП не работает, тогда действительно он будет удалять русские буквы как символы, не составляющие слова.

Как локализацию посмотреть?
или изменить?

dacuan 30.07.2004 17:09

shuron

Локаль устанавливается функцией setlocale. Например для русского языка в кодировке windows-1251 необходимо добавить следующую строку:

setlocale(LC_ALL, "ru_RU.CP1251");

Подробнее по аргументам посмотри в мануале. Но я все-равно не уверен, что и с установленной локалью регулярные выражения будут правильно отрабатывать русские символы.

is_absent 30.07.2004 22:37

shuron
ты хотел посмотреть, какая кодировка используется в базе данных.
это запрос к базе данных MySQL, который покажет все переменные, в которых встречается строка char (charset, charsets).


Часовой пояс GMT +4, время: 11:48.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.