Имя: Пароль:
IT
Админ
Помогите с MySQL запросом и кодировкой ( Осторожно PHP код! )
,
0 D_Pavel
 
04.09.15
09:38
mysqli_query($link, "set character_set_results='UTF8'");
mysqli_query($link, "set character_set_client='UTF8'");

$res = mysqli_query($link, "SELECT *
    FROM `kladr`
    WHERE id = 1564 ");//AND city = '$city' ");
$row=$res -> fetch_assoc();

print_r ( $row['city'] == $city ); // выдает 1, то есть они равны !!!!!

если добавить условие " AND city = '$city'", то запрос ничего не находит. Почему так и как исправить?
1 beaver1971
 
04.09.15
09:43
а что в PHP происходит с переменными в одинарных и двойных кавычках?
2 D_Pavel
 
04.09.15
09:45
(1) Используются только двойные.
3 D_Pavel
 
04.09.15
09:46
(1) Кодировка от кавычек не зависит
4 beaver1971
 
04.09.15
09:46
(2) AND city = '$city'?
5 D_Pavel
 
04.09.15
09:47
(4) " AND city = '$city'"
6 beaver1971
 
04.09.15
09:47
+(4) по всей видимости у тебя в базе нет города с названием $city
7 salat-production
 
04.09.15
09:48
Какая задача то? Что должно выводиться?
8 D_Pavel
 
04.09.15
09:48
(6) Есть. Если текст запроса вывести на экран, потом его скопировать в phpMyAdmin, то запрос срабатывает правильно.
9 D_Pavel
 
04.09.15
09:50
(7) Запрос с условием по городу должен был выдать ту же самую запись что и без условия.
10 salat-production
 
04.09.15
09:50
И что это вообще за муть?)) Что ты хотел этим проверить?
print_r ($row['city'] == $city)

Может быть:
<? $row['city'] == $city ? print_r ('Идентичны') : print_r('Не совпадают'); ?>
11 D_Pavel
 
04.09.15
09:51
(10) Да, именно это и хотел проверить. Они идентичны.
12 D_Pavel
 
04.09.15
09:51
Почему муть? Просто более короткая запись, для отладки сгодится
13 beaver1971
 
04.09.15
09:54
(9)
$gorod = 'Moscow';
$gr1 = "$gorod";
$gr2 = '$gorod';
$gr1 = $gr2??????

$res = mysqli_query($link, "SELECT *
    FROM `kladr`
    WHERE id = 1564 AND city = '" . $city . "'");
14 salat-production
 
04.09.15
09:58
У тебя класс мускула исключения выбрасывает?
Если нет, вывеби через try catch. Что дебаг говорит?
Лично мне например из вопроса ничего не ясно, кроме того, что запрос не проходит из функции, а из майадмина все ок.
15 salat-production
 
04.09.15
10:04
И зачем кодировку в двух запросах втыкать, достаточно одного при подключении к базе.
mysqli_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");
16 D_Pavel
 
04.09.15
10:05
(14) Нет никаких исключений, просто в условии город не в той кодировке, а как ее задать правильно не знаю.
17 D_Pavel
 
04.09.15
10:09
(13) Я же писал уже, в двойных кавычках надо, а у тебя в одинарных.

Вместо: $gr2 = '$gorod';

Сделай так: $gr2 = "'$gorod'";

получится  $gr2 = "'Moscow'"

В общем ты мне не то пишешь.
18 D_Pavel
 
04.09.15
10:09
(15) Спасибо, помогло. Куда деньги слать?

Темку можно закрыть.
19 beaver1971
 
04.09.15
10:25
(17) $gr1 = $gr2??????
20 D_Pavel
 
04.09.15
11:21
(19) ну не задавай глупых вопросов. Понятно же все
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший