У меня следующий запрос mysql:
SELECT user_boothid,user_id,user_fname,user_lname,user_ts,user_company,user_photo FROM se_users WHERE (user_email REGEXP 'Елена' || user_displayname REGEXP 'Елена' || user_company REGEXP 'Елена' || user_title REGEXP 'Елена' || user_fname REGEXP 'Елена' || user_lname REGEXP 'Елена') && user_eventid='15' && user_id!='799' && user_active='true' && ( user_id!=818 )
если я запускаю этот запрос на консоли, я получаю результат, но если я запускаю его из сценария php, ничего не возвращаем. Я использую класс для управления подключением к БД и запросами, и это:
function __construct($serverdb,$usernamedb,$passworddb,$namedb){
//Fixed problem when old connection (from SocialEngine) was used
//$this->linkDB=mysql_connect($serverdb,$usernamedb,$passworddb)or die("Can't Connect to DB");
$this->linkDB=mysql_connect($serverdb,$usernamedb,$passworddb,TRUE)or die("Can't Connect to DB");
mysql_query("SET character_set_results=utf8", $this->linkDB);
mb_language('uni');
mb_internal_encoding('UTF-8');
mysql_select_db($namedb,$this->linkDB)or die("Can't Select DB");
//mysql_query("set names 'utf8'",$this->linkDB);
mysql_set_charset('utf8',$this->linkDB);
}
function makeQuery($query){
mysql_query("SET character_set_client=utf8", $this->linkDB);
mysql_query("SET character_set_connection=utf8", $this->linkDB);
//mysql_query("set names 'utf8'",$this->linkDB);
mysql_set_charset('utf8',$this->linkDB);
mysql_query($query,$this->linkDB)or die(mysql_error()."Query: ".$query);
return mysql_insert_id($this->linkDB);
}
function returnQuery($query){
mysql_query("SET character_set_results=utf8", $this->linkDB);
//mysql_query("set names 'utf8'",$this->linkDB);
mysql_query("SET CHARACTER SET 'utf8'",$this->linkDB);
mysql_set_charset('utf8',$this->linkDB);
$temp=mysql_query($query,$this->linkDB)or die(mysql_error());
$num=mysql_num_rows($temp);
$rows=Array();
for($i=0;$i<$num;$i++){
$rows[$i]=mysql_fetch_assoc($temp)or die(mysql_error());
}
return $rows;
}
Я проверил это, и кодировка, кажется, в порядке (если я делаю запрос с идентификатором, возвращаю строку со всеми русскими символами, как и должно), но использование регулярного выражения не работает.
Кто-нибудь может дать мне подсказку, где искать?
С уважением,
Тень.
ОБНОВЛЕНИЕ: эта проблема возникает, если я использую LIKE или = для поиска.
ОБНОВЛЕНИЕ2: Я понял, что проблема заключается в переменной $ term, в которой содержится термин для поиска, если я жестко задал значение, по которому работает запрос, но нет, если я получу значение из post