Как написать хранимую процедуру с помощью phpmyadmin и как использовать ее через php?


Я хочу иметь возможность создавать хранимые процедуры с помощью phpMyAdmin, а затем использовать их через php.

Но я не знаю, как это сделать?

Из того, что я знаю, я узнал, что мы не можем управлять хранимыми процедурами с помощью phpMyAdmin.

Какой другой инструмент может управлять хранимой процедурой?

Я даже не уверен, что лучше использовать хранимую процедуру через PHP. Любое предложение?

Author: Starx, 2010-05-17

10 answers

Поскольку хранимая процедура создается, изменяется и удаляется с помощью запросов, вы фактически МОЖЕТЕ управлять ими с помощью phpMyAdmin.

Для создания хранимой процедуры можно использовать следующее (при необходимости изменить):

CREATE PROCEDURE sp_test()
BEGIN
  SELECT 'Number of records: ', count(*) from test;
END//

И убедитесь, что вы установили для поля "Разделитель" на вкладке SQL значение //.

Как только вы создали хранимую процедуру, она появится в наборе полей подпрограмм под вашими таблицами (на вкладке Структура), и вы можете легко изменить/удалить ее.

Для использования хранимая процедура из PHP вы должны выполнить запрос ВЫЗОВА, точно так же, как вы сделали бы в обычном SQL.

 92
Author: wimvds, 2010-05-17 09:15:53

Я думаю, что никто не упоминал об этом, поэтому я напишу это здесь. В phpMyAdmin 4.x на вкладке "Подпрограммы" в верхней строке есть ссылка "Добавить процедуру". Эта ссылка открывает всплывающее диалоговое окно, в котором вы можете написать свою хранимую процедуру, не беспокоясь о разделителе или шаблоне.

enter image description here

Добавить процедуру

enter image description here

Обратите внимание, что для простой тестовой хранимой процедуры вам может потребоваться удалить параметр по умолчанию, который уже задан, или вы можете просто задать для него значение.

 55
Author: Hammad Khan, 2017-07-31 20:40:43

Попробуйте это

delimiter ;;

drop procedure if exists test2;;

create procedure test2()

begin

select ‘Hello World’;

end

;;
 25
Author: Sourav, 2011-04-29 08:50:41

Попробуйте Toad для MySQL - он бесплатный и отличный.

 1
Author: ronaldosantana, 2010-05-17 03:51:00

Я заставил его работать в phpAdmin, но только когда удалил фразу "Количество записей".

В моей версии phpAdmin я мог видеть поле для изменения разделителей.

Также, чтобы увидеть процедуру в базе данных, я зашел в дом phpadmin, затем в базу данных information_schema, а затем в таблицу подпрограмм.

 1
Author: Reto, 2012-05-11 18:43:56

Новая версия phpMyAdmin (3.5.1) имеет гораздо лучшую поддержку хранимых процедур, включая: редактирование, выполнение, экспорт, создание кода PHP и некоторую отладку.

Убедитесь, что вы используете расширение mysqli в config.inc.php

$cfg['Servers'][$i]['extension'] = 'mysqli';

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

Первый тест, который я провел, выдал следующее сообщение об ошибке:

MySQL сказал: #1558 - Количество столбцов mysql.proc неверно. Ожидалось 20, найдено 16. Создан с помощью MySQL 50141, теперь работает под управлением 50163. Пожалуйста, используйте mysql_upgrade, чтобы исправить эту ошибку.

Блог Ciuly's предоставляет хорошее решение, если у вас есть доступ к командной строке. Не знаю, как бы вы это исправили, если бы не сделали этого.

 1
Author: Paul J, 2012-06-27 07:29:43
  1. разделитель;;
  2. СОЗДАЙТЕ ПРОЦЕДУРУ sp_number_example_records()
  3. НАЧАТЬ
    ВЫБЕРИТЕ количество (идентификатор) у клиента; КОНЕЦ
  4. ;;
 1
Author: Jay Thakkar, 2013-05-27 06:59:13

Все приведенные выше ответы содержат определенные предположения. В 1and1 существуют основные проблемы, и некоторые другие хостинг-провайдеры используют версии phpMyAdmin, которые очень старые и имеют проблему с определенным разделителем; и нет способа изменить его с phpMyAdmin. Ниже приведены способы

  1. Создайте нового phpMyAdmin на хостинг-провайдере. Прикрепленная ссылка дает вам представление http://internetbandaid.com/2009/04/05/install-phpmyadmin-on-1and1 /
  2. Пройдите через сложный маршрут, позволяющий получить доступ к MySQL ваших хостинг-провайдеров с вашего dekstop. Это сложно, но лучше всего, если вы серьезный разработчик. вот ссылка, чтобы сделать это http://franklinstrube.com/blog/remote-mysql-administration-for-1and1 /

Надеюсь, это поможет

 0
Author: Sandeep Taneja, 2013-11-28 16:34:17

На локальном сервере будет работать ваш следующий запрос

DELIMITER |

CREATE PROCEDURE sample_sp_with_params (IN empId INT UNSIGNED, OUT oldName VARCHAR(20), INOUT newName VARCHAR(20))

BEGIN

SELECT `first name` into oldName FROM emp where id = empId;

UPDATE emp SET `first name`= newName where id = empId;

END

|

DELIMITER ;

Но на рабочем сервере это может не сработать. зависит от используемой версии mysql. У меня была такая же проблема на сервере powweb, я удалил разделитель и начал ключевые слова, все работает нормально. взгляните на следующий запрос

CREATE PROCEDURE adminsections( IN adminId INT UNSIGNED ) SELECT tbl_adminusersection.ads_name, tbl_adminusersection.ads_controller FROM tbl_adminusersectionright LEFT JOIN tbl_adminusersection ON ( tbl_adminusersectionright.adsr_ads_id = tbl_adminusersection.ads_id ) LEFT JOIN tbl_adminusers ON ( tbl_adminusersectionright.adsr_adusr_id = tbl_adminusers.admusr_id ) WHERE tbl_adminusers.admusr_id = adminId;

Надеюсь, это вам поможет.

Спасибо

 0
Author: Delickate, 2014-12-09 08:22:16
/*what is wrong with the following?*/
DELIMITER $$

CREATE PROCEDURE GetStatusDescr(
    in  pStatus char(1), 
    out pStatusDescr  char(10))
BEGIN 
    IF (pStatus == 'Y THEN
 SET pStatusDescr = 'Active';
    ELSEIF (pStatus == 'N') THEN
        SET pStatusDescr = 'In-Active';
    ELSE
        SET pStatusDescr = 'Unknown';
    END IF;

END$$
 0
Author: Ajnabi, 2017-10-02 16:49:32