Sven Rautenberg: [PHP] MySQL-Prozeduren in PHP verwenden

Beitrag lesen

Moin!

Moin!

DELIMITER //
DROP PROCEDURE sql_insert;

CREATE PROCEDURE sql_insert()
begin
SELECT * FROM TABELLE;
end;


> > > Selbst diese einfach Prozedur lässt sich nicht erstellen und gibt mir als Fehler aus, dass ich die Syntax bei '; überprüfen soll...  
> >   
> > Wenn dein PHP kein mysqli unterstützt, weil die Extension nicht  
> > installiert ist, dann kannst du dein Vorhaben vergessen.  
> Doch doch, das ist alles vorhanden und eingerichtet. Und funktioniert bisher auch :)  
  
Dann fang doch einfach mal an, mysqli zu benutzen. :) Sonst stößt du immer wieder auf Probleme.  
  

> Seltsamerweise funktioniert folge Erstellung einer Prozedur, obwohl es auf diversen anderen Seiten nicht so beschrieben wird und trotzdem funktioniert. (Siehe anderes Beispiel von mir)  
>   
> ~~~sql
  

> DELIMITER //  
>   
> DROP PROCEDURE IF EXISTS `sql_select_output`//  
> CREATE DEFINER=`root`@`localhost` PROCEDURE `sql_select_output`()  
> begin  
> insert into perprop.ppp_guest_tasks (user, task, credate) values ('User2', 'Test3', CURRENT_DATE());  
> end  
> 

mysql_query teilt den als Parameter übergebenen String an jedem Semikolon auf und sendet dann nur den ersten Teil an MySQL ab. Heißt: Hier fehlt dir am Ende des Querys vermutlich der Befehl "end" - und wahrscheinlich korrigiert MySQL das stillschweigend (oder du ignorierst den Fehler), weil danach der Query sowieso zu Ende ist.

Sprich: Weil du den DELIMITER geändert hast, greift der Standardmechanismus von mysql_query nicht mehr.

Da du aber sowieso mysqli benötigst, erscheint es sehr unsinnig, sich eine Sonderlösung für mysql zu bauen.

- Sven Rautenberg