[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PMA выполняет а php не может
Basili4

Есть запрос привожу его как есть вот PMA возвращает набор. А мой скрипт нет

сам запрос как есть
SELECT id FROM `kp` WHERE `lon`=41.9974 and `lat`=45.072 and `dir`=0 and `name`='Ул Пригородная' and id<>1;


кусок скрипта

$sql = "SELECT id FROM `kp` WHERE `lon`={$ControlPoint['lon']} and `lat`={$ControlPoint['lat']} and `dir`={$ControlPoint['dir']} and `name`='{$ControlPoint['name']}' and  id<>{$ControlPoint['id']};";

write("получаю все дубликаты точек $sql");

$rListControlPointDouble=mysql_query($sql) or (die("ERROR".$sql." ". mysql_error()));
while ($controlPointDouble=mysql_fetch_assoc($rListControlPointDouble))
{
// код
}



так вот код не выполняется т.е. ошибка не в коде цикла ошибка в то что набор пустой.

Уже час голову ломаю почему на работает :(((



Спустя 2 минуты (2.04.2011 - 20:57) Basili4 написал(а):
Выяснил следующее если убрать `name`='{$ControlPoint['name']}' то все ок.

Спустя 19 минут, 21 секунда (2.04.2011 - 21:17) Invis1ble написал(а):
Basili4
Могу предположить, что проблема связана с кодировкой строки в $ControlPoint['name'] либо кодировкой данных в поле `name`...

Спустя 22 секунды (2.04.2011 - 21:17) Trianon написал(а):
В глаза сразу бросается отсутствие экранирования при формировании SQL-литерала.

Ну и еще, как вариант - неверно установленная кодировка соединения...

Спустя 1 минута, 4 секунды (2.04.2011 - 21:18) Basili4 написал(а):
соединение utf8, база utf8 все что вижу все utf8

Спустя 56 секунд (2.04.2011 - 21:19) Basili4 написал(а):
с экранированием таже песня

Спустя 5 минут, 26 секунд (2.04.2011 - 21:25) Invis1ble написал(а):
Покажи дамп структуры таблицы kp

Спустя 5 минут, 35 секунд (2.04.2011 - 21:30) Trianon написал(а):
Так не бывает.

Спустя 6 минут, 30 секунд (2.04.2011 - 21:37) fallow написал(а):
Попробуй апострофы у `name`='{$ControlPoint['name']}' убрать до { и после }
И посмотри $sql запрос обычным echo в браузере до отправки, ну мало ли..

Спустя 17 минут, 58 секунд (2.04.2011 - 21:55) Basili4 написал(а):
REATE TABLE IF NOT EXISTS `kp` (
`id` int(11) NOT NULL,
`name` varchar(50) NOT NULL,
`nameCp` varchar(50) NOT NULL,
`dir` int(11) NOT NULL,
`lon` double NOT NULL,
`lat` double NOT NULL,
`radius` int(11) NOT NULL,
`tumba` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Спустя 23 минуты, 25 секунд (2.04.2011 - 22:18) Trianon написал(а):
Я вот думаю, что величины с плавающей точкой (float), сравниваемые на строгое равенство, это засада.

Если требуется использовать их в качестве ключей, я бы предпочел хранить их целыми (с фиксированным множителем) либо накрайняк - в типе DECIMAL()


_____________
Цитата
От постоянного сидения рядом с клавиатурой начинает болеть спина.


Делаю сайты, пишу скрипты php, js.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.