Intereting Posts
Как поместить строку в текстовый файл в PHP? Невозможно загрузить функции LDAP в PHP Доступ к серверу без доступа к серверу Apache – Ubuntu symfony2 + doctrine2 @ postgresql, устанавливающий схему Как хранить массивы элементов в разных переменных в php htaccess перенаправляет с маскировкой домена, не работающей при запросе корневого каталога Ошибка WordPress при разработке плагина – «У вас недостаточно прав для доступа к этой странице». PHP – определение константы внутри класса Как просмотреть сведения о сеансе в php с помощью firebug? Как сохранить данные POST через ajax-запрос после перенаправления .htaccess? Что такое жалоба RFC и регулярное выражение для проверки правильности строки? Результаты пересечения Mysql phpseclib – бесконечная загрузка Как добавить динамическое текстовое поле (строка) и сохранить в базу данных с помощью PHP Как получить последнее значение автоматического прироста в качестве внешнего ключа для другой таблицы в php

CakePHP с сохраненной процедурой

Я пытаюсь создать хранимую процедуру в Cakephp. Я создал процедуру в MYSQL и создал глобальную функцию в AppModel.php, чтобы выполнить процедуру. Функция в AppModel – это sProcedure. Теперь у меня есть два условия: у меня может быть переменная для возврата из процедуры или, возможно, прямой набор результатов, например. Я создал для Pagination. Хотя он снимает мою процедуру, но не возвращает никакого результата. Является ли моя функция изменением?

public function sProcedure($name = NULL, $inputParameter = array(), $outputParameter = array()) { $this->begin(); $parameter = ""; $outputParam = ""; foreach ($inputParameter as $params) { $parameter .= $parameter == "" ? " '$params' " : ", '$params' "; } if (count($outputParameter) > 0) { foreach ($outputParameter as $prm) { $outputParam .= $outputParam == "" ? " @$prm " : ", @$prm "; } } $parameter = ($outputParam) ? $parameter . ", " . $outputParam : $parameter; $this->query("CALL `$name`($parameter);"); $result = $this->query("SELECT $outputParam"); $this->commit(); return $result; } $sel_data = $this->ArticleNews->sProcedure("update_blank", $input_prameter, $output); debug($sel_data); 

Нарушение фрагмента

 $this->query("CALL `$name`($parameter);"); 

вызывает хранимую процедуру. Предположим, что тело процедуры является простым SELECT

 SELECT table.* FROM table; 

Эта процедура возвращает набор результатов. Посмотрите на код, который вы указали

  $this->query("CALL `$name`($parameter);"); 

Да , процедура вызывается, но результат / ресурс не назначается переменной для перебора .

 $proc_result = $this->query("CALL `$name`($parameter);"); $proc_data = array(); if (false !== $proc_result) { while ($proc_row = mysqli_fetch_array($proc_result)) { $proc_data[] = $proc_row; } } if (!empty($proc_data)) { //do whatever with procedure data } 

Сопутствующая документация: connector-cpp-tutorials-stored-routines-statements

Используйте следующий код для вызова хранимой процедуры cakephp 3

Его работа для меня …..

 $this->connection = ConnectionManager::get('default'); $meritlists = $this->connection->execute("CALL generateMeritList()")->fetchAll('assoc'); 

Парни НЕ ДОЛЖНЫ БЫТЬ головами

проверьте эти пару строк:

 $sql="CALL `delete_category`(".$id.");"; $db3= ConnectionManager::getDataSource('default'); $db3->query($sql); 

гарантированно работает. getDatasource возвращает объект $ mysqli, поэтому вы можете его использовать

проверить руководство по PHP для sp Вызов хранимой процедуры в php