PHP+MySQL (Хранимая функция в запросе) | |
---|---|
Зингер Автор Сообщений: 541 Откуда: Белгород Дата регистрации: 02.12.2008 |
Перерыл много форумов и тем, так ответа и не нашел.
Apache2.2+PHP5.3+MySQL5.5 x64 на OpenServer5.2.2. Создаю запрос в классе с БД (реализация PDO):
В функции класса select_resultat_otdel_data_method() в запросе объявлена хранимая функция БД Month_to_text(). На сервере запрос "отрабатывает на ура", через PHP возвращает пустой результат. Если, убрать функцию в запросе, то все проходит нормально. Причем в функции Month_to_text() пробовал различные варианты типов возвращаемых значений. Не работает ни хера! Уже 4 дня бьюсь. Может такого в реализации PHP+MySQL не предусмотрено? Надеюсь нормально объяснил. Помогите пож-та. |
Re: PHP+MySQL (Хранимая функция в запросе) | |
---|---|
Vedmak Сообщений: 5949 Откуда: CiTY Дата регистрации: 30.10.2003 |
Посмотри различия в правах пользователя которым ты "запускаешь" ХП. "На сервере руками" это одни права, а приложение в сессии может не иметь прав "EXECUTE".
в том же ключе, если коннект к базе ограничен правами, то и вызов функций может не работать и триггеры вести себя "странно". В тоже время логгируй все ошибки в файл... много полезного несет такой опыт! ------------------ Говорить стоит лишь для тех, кто слушает. Исправлено 3 раз(а). Последнее : Vedmak, 28.10.17 01:35 |
Re: PHP+MySQL (Хранимая функция в запросе) | |
---|---|
Зингер Автор Сообщений: 541 Откуда: Белгород Дата регистрации: 02.12.2008 |
Спасибо, дружище! Это абсолютно то что было нужно. У юзера, который коннектился не было прав на выполнение хранимок. Как только проставил права, все пошло как по маслу. Как ты думаешь, нужно ли хранить пользователя "root" или так же как в SQL Server я удалял "sa"? |
Re: PHP+MySQL (Хранимая функция в запросе) | |
---|---|
Vedmak Сообщений: 5949 Откуда: CiTY Дата регистрации: 30.10.2003 |
Это греет душу.
Сам пользователь *root* принципиально не отличается от прочих логинов (по крайней мере я не встречал что его отличает), но первое, что я рекомендую, ограничить его права доступа к БД коннектом с localhost. Для начала. Затем следует оценить необходимость удаленного доступа к БД с разными правами. Например, если есть необходимость, создать пользователя с расширенными правами (меньшими, чем у root), но указать явно host с которого этот пользователь будет будет приниматься сервером. Вариантов много. Самый параноидальный вариант изначально запретить все и всем. Затем под каждый логин строго выдавать права на каждый клиентский хост. Лучше ли? не знаю. Зависит от ТЗ и "маний" заказчика. P.S. Про логирование я не зря упомянул, анализ текстов возвращаемых в приложение сторонними библиотеками крайне полезен для анализа вариантов дальнейшего поведения. Я уверен, что и в твоей ситуации был намек на проблемы с правами. ------------------ Говорить стоит лишь для тех, кто слушает. Исправлено 2 раз(а). Последнее : Vedmak, 30.10.17 21:31 |
Re: PHP+MySQL (Хранимая функция в запросе) | |
---|---|
Vedmak Сообщений: 5949 Откуда: CiTY Дата регистрации: 30.10.2003 |
По поводу примера твоего кода приведу свой кусок.
В строке построения текста запроса я стараюсь соблюдать "вложенность". Это не эталон конечно и в большей степени скорее привычка, чем правило, но пустые строки (пробелы и отступы TAB) в коде не вредят. joxi.ru joxi.ru joxi.ru Мне кажется, что мой код читать легче, чем твой. Повторюсь, это мое личное мнение. ------------------ Говорить стоит лишь для тех, кто слушает. Исправлено 3 раз(а). Последнее : Vedmak, 30.10.17 21:49 |
Re: PHP+MySQL (Хранимая функция в запросе) | |
---|---|
Vedmak Сообщений: 5949 Откуда: CiTY Дата регистрации: 30.10.2003 |
Думаю мой вариант полегче для чтения. Скобок поменьше на метр кода Но пробелов в разы больше
------------------ Говорить стоит лишь для тех, кто слушает. Исправлено 2 раз(а). Последнее : Vedmak, 30.10.17 21:46 |
Re: PHP+MySQL (Хранимая функция в запросе) | |
---|---|
Vedmak Сообщений: 5949 Откуда: CiTY Дата регистрации: 30.10.2003 |
По поводу сборки строки с датой
Думаю имеет смысл рассмотреть возможность получения DATЕTIME из базы в формате UNIX_TIMESTAMP, т.е. кол-во секунд начиная с 01/01/1970. PHP умеет это перевести в строку функцией DATE(). Правда я пока воюю с региональными настройками конечного результата. Все на EN получается, а мне нужны RU и LV. Как видишь, я тоже учусь. ------------------ Говорить стоит лишь для тех, кто слушает. Исправлено 2 раз(а). Последнее : Vedmak, 30.10.17 22:01 |
© 2000-2024 Fox Club  |