it-swarm.com.de

Wie schreibe ich eine gespeicherte Prozedur mit phpmyadmin und wie verwende ich sie über php?

Ich möchte in der Lage sein, gespeicherte Prozeduren mit phpMyAdmin zu erstellen und später über PHP zu verwenden. 

Aber ich weiß nicht wie?

Nach allem, was ich weiß, habe ich herausgefunden, dass wir gespeicherte Prozeduren nicht über phpMyAdmin verwalten können.

Welches andere Tool kann gespeicherte Prozeduren verwalten?

Ich bin nicht einmal sicher, ob es besser ist, gespeicherte Prozeduren über PHP zu verwenden. Irgendein Vorschlag?

58
Starx

Da eine gespeicherte Prozedur mit Abfragen erstellt, geändert und verworfen wird, können Sie sie tatsächlich mit phpMyAdmin verwalten.

Um eine gespeicherte Prozedur zu erstellen, können Sie Folgendes verwenden (ggf. ändern):

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

Stellen Sie sicher, dass Sie das Feld "Trennzeichen" auf der Registerkarte SQL auf // setzen.

Nachdem Sie die gespeicherte Prozedur erstellt haben, wird sie im Feld "Routinen" unter Ihren Tabellen (auf der Registerkarte "Struktur") angezeigt. Sie können sie problemlos ändern/löschen.

Um die gespeicherte Prozedur von PHP verwenden zu können, müssen Sie eine CALL-Abfrage ausführen, genau wie Sie es in normalem SQL tun würden.

92
wimvds

Ich denke, niemand hat das erwähnt, also schreibe ich es hier. In phpMyAdmin 4.x befindet sich in der oberen Zeile unter der Registerkarte "Routinen" der Link "Routine hinzufügen". Dieser Link öffnet ein Popup-Dialogfeld, in dem Sie Ihre gespeicherte Prozedur schreiben können, ohne sich um Trennzeichen oder Vorlagen zu kümmern.

enter image description here

Routine hinzufügen

enter image description here

Beachten Sie, dass Sie für eine einfache, gespeicherte Testprozedur den bereits angegebenen Standardparameter löschen möchten oder einfach einen Wert festlegen können.

57
Hammad Khan

versuche dies

delimiter ;;

drop procedure if exists test2;;

create procedure test2()

begin

select ‘Hello World’;

end

;;
25
Sourav

Die neue Version von phpMyAdmin (3.5.1) bietet eine bessere Unterstützung für gespeicherte Prozeduren. Dazu gehören: Editieren, Ausführen, Exportieren, PHP Code-Erstellung und einige Fehlersuche.

Stellen Sie sicher, dass Sie die mysqli -Erweiterung in config.inc.php verwenden

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

Wenn Sie eine beliebige Datenbank öffnen, wird oben eine neue Registerkarte mit dem Namen Routines angezeigt. Wählen Sie dann Add Routine aus.

Beim ersten Test, den ich durchgeführt habe, wurde folgende Fehlermeldung ausgegeben:

MySQL sagte: # 1558 - Die Anzahl der Spalten von mysql.proc ist falsch. Erwartet 20, gefunden 16. Erstellt mit MySQL 50141 und führt jetzt 50163 aus. Bitte beheben Sie diesen Fehler mit mysql_upgrade.

Ciulys Blog bietet eine gute Lösung, vorausgesetzt, Sie haben Befehlszeilenzugriff. Nicht sicher, wie Sie das Problem beheben würden, wenn Sie dies nicht tun.

1
Paul J

Testen Sie Toad for MySQL - es ist kostenlos und es ist großartig.

1
ronaldosantana
  1. trennzeichen ;;
  2. CREATE PROCEDURE sp_number_example_records ()
  3. START
    SELECT Anzahl (ID) vom Kunden; END
  4. ;;
1
Jay Thakkar

Ich habe es für phpAdmin bekommen, aber nur, wenn ich den Satz "Anzahl der Datensätze" entfernt habe.

In meiner Version von phpAdmin konnte ich die Box zum Ändern der Trennzeichen sehen.

Um die Prozedur in der Datenbank zu sehen, ging ich zur phpAdmin-Startseite, dann zur information_schema-Datenbank und dann zur Routinen-Tabelle.

1
Reto

Bei allen obigen Antworten werden bestimmte Annahmen gemacht. In 1und1 gibt es grundlegende Probleme, und einige andere Hosting-Anbieter verwenden phpMyAdmin-Versionen, die sehr alt sind und das Problem haben, dass das definierte Trennzeichen dies ist. und es gibt keine Möglichkeit, es von phpMyAdmin zu ändern. Nachfolgend sind die Möglichkeiten

  1. Erstellen Sie einen neuen PHPMyAdmin auf dem Hostinganbieter. Angehängter Link gibt Ihnen eine Idee http://internetbandaid.com/2009/04/05/install-phpmyadmin-on-1and1/
  2. Gehen Sie den komplizierten Weg durch, um auf Ihre Hosting-Provider mySQL von Ihrem dekstop aus zugreifen zu können. Es ist kompliziert, aber das Beste, wenn Sie ein seriöser Entwickler sind. Hier ist ein Link, um dies zu tun http://franklinstrube.com/blog/remote-mysql-administration-for-1and1/

Hoffe das hilft

0
Sandeep Taneja

Auf dem lokalen Server funktioniert die folgende Abfrage

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 ;

aber auf dem Produktionsserver funktioniert es möglicherweise nicht. hängen Sie von der verwendeten mysql-Version ab. Ich hatte ein ähnliches Problem auf dem powweb-Server. Ich entfernte Trennzeichen und begann mit Schlüsselwörtern. Es funktioniert einwandfrei

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;

hoffe es hilft dir.

vielen Dank

0
Delickate
/*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
Ajnabi