Хитрый запрос который не работает о_О

GrandMasterX

Новичок
Доброго всем времени суток!
Такое дело, не могу никак настроить запрос. Обьясню в кратце:
я выбераю данные с таблиц турфирмы, мне нужно выбрать те фирмы, в которых оплата(paystatus)=1 И название страны которое выбрал пользователь. Что бы выбра название страны сначала нужно джойнить список id которые записаны в поле типа text, через запятую. С этой задачкой справился, все выберает четко, джойнит супер. Проблема в другом. Когда я запихиваю все в php на сайт что бы работало предварительно проверил в SQL запросах на phpMyAdmin где все работает как часы швейцарские то оно в тупую не работает, уже неделю бьюсь и не могу понять почему не пашет. Ниже код:
PHP:
<?
            	include("../admin/config/db.conf.php");
            	$link = mysql_pconnect($CONFIG['DB']['local']['mysql']['host'], $CONFIG['DB']['local']['mysql']['user'], $CONFIG['DB']['local']['mysql']['password']);
            	mysql_select_db($CONFIG['DB']['local']['mysql']['db_name'], $link);

            	$SQL = "SELECT t.title as title,
t.email as email,
c.name as city_name,
c.city_id as id,
co.CName AS cityname,
co.country_id,
f.countries
     FROM ua_cities c
     LEFT JOIN  tourfirm_offices t ON t.city_id = c.city_id
     LEFT JOIN tourfirms f ON t.firm_id = f.firm_id
     LEFT JOIN countries co ON f.countries LIKE CONCAT( co.country_id, \",%\" )
     OR f.countries LIKE CONCAT( \"%,\", co.country_id )
     OR f.countries LIKE CONCAT( \"%,\", co.country_id, \",%\" )
  WHERE t.pay_status = 1
 AND co.CName = \"Турция\"
  GROUP BY city_name";
            	$res = mysql_query($SQL);

            	$out_city = "";
            	while ($info = mysql_fetch_array($res)) {
            		$city_array[] = $info["id"];
					$out_city .= "<option value='".$info["id"]."'>".iconv("windows-1251", "utf-8", $info["city_name"])."</option>";
            	}



            	$SQL = "
SELECT t.title as title,
t.email as email,
c.name as city_name,
c.city_id as id,
co.CName AS cityname,
co.country_id,
f.countries
     FROM ua_cities c
     LEFT JOIN  tourfirm_offices t ON t.city_id = c.city_id
     LEFT JOIN tourfirms f ON t.firm_id = f.firm_id
     LEFT JOIN countries co ON f.countries LIKE CONCAT( co.country_id, \",%\" )
     OR f.countries LIKE CONCAT( \"%,\", co.country_id )
     OR f.countries LIKE CONCAT( \"%,\", co.country_id, \",%\" )
  WHERE t.pay_status = 1
  GROUP BY t.title
 ";
$res = mysql_query($SQL);
            	while ($info = mysql_fetch_array($res)) {
					$agancy_array[] = $info;
            	}

                             //   if (!$res = mysql_query($SQL)) exit(mysql_error());

            //	var_dump($agancy_array);
            //	echo iconv("windows-1251", "utf-8", $data[0]["name"]);
            ?>
Если убрать
PHP:
 AND co.CName = \"Турция\"
то выводит страны где пейстатус = 1
Если запихнуть весь этот код в SQL без экранированных кавычек))) то все пашет.
А вот почему не пашет именно в использовании php? проверив данные через

PHP:
//	var_dump($agancy_array);
            //	echo iconv("windows-1251", "utf-8", $data[0]["name"]);
Оно показало результат NULL.
Как он может быть NULL если данные в SQL выбераются? Кто знает в чем может быть дело?
Могу даже дамп скинуть базы и поисковик, лишь бы помогли))) Я уже неделю мучаю... чесслово, столько всего прочитал и перерыл а в чем дело так и не нашел.
Заранее благодарен!
 

Yaroslav PHPDev

Новичок
Зачем экранировать ковычки в слове Турция? Это строка!
Попробуйте так
PHP:
co.Cname = "Турция"
 

GrandMasterX

Новичок
а как поменять кодировку в отдельном каком-то месте с cp1251 на utf8? Нашел только для всей страницы.
дело в том что когда смотришь инфо про страницу там написано что кодировка utf8
 

KorP

Новичок

GrandMasterX

Новичок
Это все очень чудно)))
Но проблема в том что я ничего не смогу помеять и провайдер тоже небудет менять. Сайт установлен не на локалке. Я конечно попробую уломать) Спасибо огромное!
Если есть какие-то еще варианты решения - буду благодарен!:)
 

KorP

Новичок
Это все очень чудно)))
Но проблема в том что я ничего не смогу помеять и провайдер тоже небудет менять. Сайт установлен не на локалке. Я конечно попробую уломать) Спасибо огромное!
Если есть какие-то еще варианты решения - буду благодарен!:)
а хостеру ничего менять не надо, просто тебе надо отказаться от виндовой кодировки и юзать utf
 

GrandMasterX

Новичок
К сожалению эту инструкцию мы выполнить не можем так как у нас уже давно используется Версия MySQL-клиента: 5.1.56 а ваша инструкция для версии " MySQL 4.1"
Ответ хостера.
Везде стоит utf )))
 

KorP

Новичок
Да не трогай ты хостера, у тебя база в utf - всё нормально, ты со своим кодом разбирайся - в какой кодировке у тебя файли с ответственно запрос.
 

GrandMasterX

Новичок
А если в кратце то какие файлы и гдепросматривать и как? :)
Заранее благодарен.
 

KorP

Новичок
файл - где у тебя код твой написан
ну а "как" - это вопрос к твоему редактору
 

GrandMasterX

Новичок
Все в кодировке utf :)))))
Проверили, все четко, никто не может ответить почему не работает по идее работающий запрос) Бред какой-то...
 

Вурдалак

Продвинутый новичок
Судя по этому куску говна:
PHP:
"<option value='".$info["id"]."'>".iconv("windows-1251", "utf-8", $info["city_name"])."</option>"
страница у тебя в UTF-8, а данные из БД приходят в windows-1251, а не наоборот. Поэтому чтобы «заработало» надо сохранить файл с этим запросом в windows-1251. Читай FAQ.
 

GrandMasterX

Новичок
да, да, судя по этому куску кода оно как бы так и есть. НО, есть как всегда НО. Все данные в моей БДшке записаны в utf8_bin или utf8_general_ci. Этот кусок говнокода писал супермегопрограммист с стажем в стотыщьмиллионов лет работы. Серьезно.
Фрейм где выполняется скрипт заценил и там тоже utf8. Буду мучать дальше) Если есть какие-то идеи еще - пишите, опробую ;)
 
Сверху