Есть запрос привожу его как есть вот 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`...
Могу предположить, что проблема связана с кодировкой строки в $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 в браузере до отправки, ну мало ли..
И посмотри $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;
`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()
Если требуется использовать их в качестве ключей, я бы предпочел хранить их целыми (с фиксированным множителем) либо накрайняк - в типе DECIMAL()
_____________