Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте, подскажите пожалуйста
Я так понимаю, что хранимые процедуры должны определяться один раз.
Тогда возникает несколько вопросов.
Как определяются хранимые процедуры в php, да и в принципе, и где хранятся?
И как мне выполнить примерно такой код
Неактивен
Хранимые процедуры хранятся в базе данных. Создаются с помощью CREATE PROCEDURE, вызываются с помощью CALL. Примеры есть в документации: http://dev.mysql.com/doc/refman/5.5/en/ … edure.html
Первый пример там похож на то, что вы указали.
Из PHP хранимые процедуры тоже можно создавать (пример http://forums.mysql.com/read.php?98,161 … msg-189634 ). Если хотите пересоздать процедуру с тем же именем, то нужно сначала дропнуть старую.
Неактивен
Здравствуйте, подскажите, пожалуйста.
У меня такой запрос
Неактивен
Подскажите, пожалуйста, при запросе через переменные и в частности через предопределенные выражения, нужно ли обрабатывать записываемую строку, например фукнцией mysqli_real_escape_string
Неактивен
Если это часть запроса, то нужно mysqli_real_escape_string, смотрите что написано про это в документации mysqli
Неактивен
Я честно говоря ничего толком не нашел по этому поводу, но читал ранее, что предопределенные выражения и хранимые процедуры как раз защищают от sql-инъекций, и как бы спасают в тех ситуациях, когда разработчики забывают прописать тот же mysql_real_escape_string.
Просто когда запрос не предопределенных, то однозначно надо, а когда он сформирован с помощью хранимой процедуры, или как в моем случае с PREPARE?
Неактивен
Теперь запрос не будет уязвимым. Но важно, чтобы запрос, которым вы передаете реальные значения был синтаксически-корректным. Если в запрос SET вставить неэкранированную кавычку, то будет ошибка.
Неактивен
Спасибо за ответ. И еще такой вопрос, касательно поддержки хранимых процедур.
Какие требуются расширения, версия mysql и тд. для работы с хранимыми процедурами, и насколько данная возможность поддерживается на хостингах.
Т.е. Возможно ли такое, что хранимые процедуры не будут работать на том или ином хостинге. Вопрос, конечно, не однозначный, но тем не менее. Так например php 5.3 есть не везде, а вот сказать, что что-то не будет работать под php 5.2 уже сложно.
Неактивен
Процедуры поддерживаются начиная с MySQL 5.0, расширений устанавливать для этого не требуется. Насчет хостинга не знаю, должно работать, но у хостеров бывают нестандартные версии.
Неактивен
Большое спасибо за ответ. А как понимать, нестандартные версии? И могут быть какие-либо проблемы, например с настройками, т.е. могут ли быть на хостинге настройки, из-за которых могут не работать процедуры?
Неактивен
Все зависит от хостинга. Могут, например, не дать прав на создание процедур. Если VDS или выделенный сервер, то проблем не будет, а для виртуального хостинга, большинство хостеров предлагают адекватные услуги, но за всех ответить нельзя.
Неактивен
Ясно спасибо. Т.е. только права на создание процедур нужны?
Неактивен