![]() |
Показаны 6 сообщений на этой странице |
Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- PHP (http://netadmin.ws/forum/forumdisplay.php?forumid=6)
-- чтение вывода mysql (http://netadmin.ws/forum/showthread.php?threadid=7298)
чтение вывода mysql
Добрый день!
Есть вот такой простенький запрос:
$sql = "SELECT url
FROM url_base
WHERE month(url_date)='3'";
Появляется ошибка "unexpected T_VARIABLE in /var/http/urlread.php on line 3".
Ð_то база содержащая полные url страниц, по которым бегают пользователи. В базу данные попадают с помощью perl-скрипта, в котором я, видимо, пропустил какой-то из неправильных знаков. Подозреваю, что ошибка связана с url содержащим неверные символы. Отсюда вопросы:
1. Есть ли способ посмотреть на каком именно знаке спотыкается скрипт?
2. Есть ли возможность преобразовать вывод из таблицы или спасет теперь уж только ручная правка?
Спасибо
Проблема решена. Беда была не в url.
Но, вопрос все-равно остался.
Преобразовать можно с помощью регулярных выражений. Получаешь строку, прогоняешь ее через preg_replace и удаляешь свои неправильные знаки.
Касательно локализации ошибки ничего сказать не могу. Но определенно есть какие-нибудь дебагеры и спецредакторы
Спасибо за ответ.
Мне не совсем понятно: в какой части кода будет обнаружена ошибка. Преположим, что в таблице есть специальные символы.
Есть конструкция запроса $sql = ..., есть собственно запрос $result=... Далее мы присваваем какой-то переменной полученное значение: $var = $row[some_symbols]; В какой из трех частей будет определена ошибка? Если бы она определялась при использовании переменной $var, то сразу после определения в нее данных их можно было прогнать через preg_replace. Собственно, тогда можно было бы с помощью regexpo'в определить и именно те данные, которые вызвали остановку. Но, боюсь, что остановка будет происходить в первой части. Впрочем, если не ошибаюсь, сам mysql допускает использование regexp'ов :0)
И, наконец, самый смешной вопрос:
А может ли, в принципе, в таблице храниться какой-то набор символов или один символ способный(-ые) вызвать ошибку парсинга?
Я прогнал url'ы на наличие спецсимволов, и нашел их огромное множество. Однако, ошибки они не вызывали. Ведь если на мой вопрос существует лишь отрицательный ответ, то все вышесказанное не имеет смысла. :0)
В "конструкции запроса", думается мне, может быть немного вариантов ошибок. Либо простейшая опечатка (ну, или ее разновидности - не поставили точку с запятой и т.д.), например, так:
mysql_query("SELECT FROM tbl WHERE id='".$id"'");
error_reporting(E_ALL);
$q=mysql_error("SELECT * FROM tbl bla-bla-bla") or die(mysql_error());
Ð_скейпить я их эскейпю, но мало ли... Наверное паранойя. А вот про
mysql_error()
| Формат времени GMT. Текущее время 12:30. | Показаны 6 сообщений на этой странице |
Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.