Comment écrire une procédure stockée en utilisant phpmyadmin et comment l'utiliser via php?

Je veux pouvoir créer des procédures stockées en utilisant phpMyAdmin et plus tard l'utiliser via php.

Mais je ne sais pas comment?

D'après ce que je sais, j'ai découvert que nous ne pouvons pas gérer les procédures stockées via phpMyAdmin.

Quel autre outil peut gérer procédure stockée?

Je ne suis même pas sûr s'il est préférable d'utiliser la procédure stockée via PHP. une suggestion?

57
demandé sur Starx 2010-05-17 07:36:56

10 réponses

Comme une procédure stockée est créée, modifiée et supprimée à l'aide de requêtes, vous pouvez les gérer en utilisant phpMyAdmin.

Pour créer une procédure stockée, vous pouvez utiliser ce qui suit (modifier si nécessaire) :

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

Et assurez-vous de définir le champ "délimiteur" sur L'onglet SQL sur //.

Une fois que vous avez créé la procédure stockée, elle apparaîtra dans le jeu de champs Routines sous vos tables (dans L'onglet Structure), et vous pouvez facilement la modifier/la supprimer.

Pour utiliser le stocké procédure de PHP, vous devez exécuter une requête D'appel, tout comme vous le feriez dans SQL simple.

92
répondu wimvds 2010-05-17 09:15:53

Je suppose que personne ne l'a mentionné alors je vais l'écrire ici. Dans phpMyAdmin 4.x, il y a un lien "ajouter une Routine " sous L'onglet" Routines " dans la rangée du haut. Ce lien ouvre une boîte de dialogue contextuelle dans laquelle vous pouvez écrire votre procédure stockée sans vous soucier du délimiteur ou du modèle.

entrez la description de l'image ici

Ajouter Une Routine

entrez la description de l'image ici

Notez que pour une procédure stockée de test simple, vous pouvez supprimer le paramètre par défaut qui est déjà donné ou vous pouvez simplement le définir avec une valeur.

55
répondu Hammad Khan 2017-07-31 20:40:43

Essayez ceci

delimiter ;;

drop procedure if exists test2;;

create procedure test2()

begin

select ‘Hello World’;

end

;;
25
répondu Sourav 2011-04-29 08:50:41

Essayez Toad pour MySQL-c'est gratuit et c'est génial.

1
répondu ronaldosantana 2010-05-17 03:51:00

Je l'ai fait fonctionner dans phpAdmin, mais seulement quand j'ai supprimé la phrase "nombre d'enregistrements".

Dans ma version de phpAdmin, je pouvais voir la boîte pour changer les délimiteurs.

Aussi pour voir la procédure dans la base de données, je suis allé à la maison phpAdmin, puis la base de données information_schema, puis la table des routines.

1
répondu Reto 2012-05-11 18:43:56

La nouvelle version de phpMyAdmin (3.5.1) a un meilleur support pour les procédures stockées; y compris: édition, exécution, exportation, création de code PHP, et un certain débogage.

Assurez-vous que vous utilisez l'extension mysqli dans config.Inc.php

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

Ouvrez une base de données, vous verrez un nouvel onglet en haut appelé Routines , puis sélectionnez Ajouter une Routine.

Le premier test que j'ai fait a produit le message d'erreur suivant:

MySQL a dit: # 1558-colonne le comte de mysql.proc a tort. Attendu 20, trouvé 16. Créé avec MySQL 50141, maintenant en cours d'exécution 50163. Veuillez utiliser mysql_upgrade pour corriger cette erreur.

Le Blog de Ciuly fournit une bonne solution, en supposant que vous avez un accès en ligne de commande. Je ne sais pas comment vous le répareriez si vous ne le faites pas.

1
répondu Paul J 2012-06-27 07:29:43
  1. délimiteur ;;
  2. Créer la procédure sp_number_example_records ()
  3. Début
    Sélectionnez le nombre (id) du client; Fin
  4. ;;
1
répondu Jay Thakkar 2013-05-27 06:59:13

Toutes les réponses ci-dessus font certaines hypothèses. Il y a des problèmes de base dans 1and1 et certains autres fournisseurs d'hébergement utilisent des versions de phpMyAdmin qui sont très anciennes et ont un problème défini par delimiter ; et il n'y a aucun moyen de le changer de phpMyAdmin. Voici les façons

  1. Créez un nouveau PHPMyAdmin sur le fournisseur d'hébergement. Le lien ci-joint vous donne une idée http://internetbandaid.com/2009/04/05/install-phpmyadmin-on-1and1/
  2. Allez à travers le itinéraire compliqué de pouvoir accéder à vos fournisseurs d'hébergement mySQL à partir de votre dekstop. C'est compliqué, mais le meilleur si vous êtes un sérieux développeur. voici un lien pour le faire http://franklinstrube.com/blog/remote-mysql-administration-for-1and1/

J'espère que cela aide

0
répondu Sandeep Taneja 2013-11-28 16:34:17

Sur le serveur local, votre requête suivante fonctionnera

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 ;

Mais sur le serveur de production, cela peut ne pas fonctionner. dépend de la version mysql que vous utilisez. J'ai eu le même problème sur le serveur powweb, j'ai supprimé delimiter et begin keywords, cela fonctionne bien. jetez un oeil à la requête suivante

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;

J'espère que ça vous aidera.

Merci

0
répondu 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
répondu Ajnabi 2017-10-02 16:49:32