[erledigt] MySQL: Stored Procedures

Diskutiere [erledigt] MySQL: Stored Procedures im Datenbanken Forum im Bereich Software Forum; Hi, hab ne Frage zu der Verwendung von stored procedures in MySQL. Ich hab gelesen, dass der Schutz vor SQL-Injektion (also unberechtigte...
  • [erledigt] MySQL: Stored Procedures Beitrag #1
jotobi

jotobi

Threadstarter
Dabei seit
06.07.2005
Beiträge
125
Alter
37
Hi, hab ne Frage zu der Verwendung von stored procedures in MySQL. Ich hab gelesen, dass der Schutz vor SQL-Injektion (also unberechtigte Datenbankmanipulationen durch den Benutzer) erst durch einen parametrisierten Aufruf gewährleistet ist. Leider weiß ich nicht, was man unter einem "parametrisierten Aufruf" versteht.

Und dann noch ne andere Frage gleich hinterher, kann man die Procedures in PHP einfach wie normale SQL Anweisungen aufrufen?

Also z.B:

PHP:
$sql = "CALL testProcedure()";
$result = mysql_query($sql);
 
Zuletzt bearbeitet:
  • [erledigt] MySQL: Stored Procedures Beitrag #2
L

LauxAimoEwa

Dabei seit
04.12.2006
Beiträge
2.003
Zum ersten: Vermutlich sowas wie

IF Parameter1 not "Leg_jetzt_los" then end

..


Zum Zweiten: Ja. Einfach den Namen der Prozedur statt nem SELECT aufrufen. Parameter einfach dahinter schreiben (Kommagetrennt). Beispiel:

$sql = "CALL testProcedure Parameter1, parameter2";
$result = mysql_query($sql);
 
  • [erledigt] MySQL: Stored Procedures Beitrag #3
jotobi

jotobi

Threadstarter
Dabei seit
06.07.2005
Beiträge
125
Alter
37
Danke, aber wenn ich das so mache, dann kommt

"Warning: mysql_fetch_assoc(): supplied argument ist not a valid MySQL result..."

Oder wie greif ich sonst auf die Daten zu, die mir zurückgeliefert werden ?

z.B.

CREATE PROCEDURE()
SELECT * from tblTestwerte;


Normalerweise geht das ja so mit mysql_fetch_assoc(), wenn ich eine normale Select Abfrage mache.
 
  • [erledigt] MySQL: Stored Procedures Beitrag #4
L

LauxAimoEwa

Dabei seit
04.12.2006
Beiträge
2.003
Ups, Hab da etwas zuviel von Dir kopiert... Also der Aufruf müsste ohne CALL vorne auskommen..

$sql = "testProcedure Parameter1, parameter2";
$result = mysql_query($sql);


Die Abfrage der Ergebnisse:

while($row=mysql_fetch_array($result)) {
$row[0] (für den ersten Rückgabe-Parameter)
$row[1] (für den zweiten Rückgabe-Parameter)...
}

...

Müsste klappen...
 
  • [erledigt] MySQL: Stored Procedures Beitrag #5
jotobi

jotobi

Threadstarter
Dabei seit
06.07.2005
Beiträge
125
Alter
37
Mhh. Leider nicht. Die Prozedur funktioniert aber, ich habs im MySQL Front getestet. Aber irgenwie kommt immer noch die gleiche Fehlermeldung (nur jetzt halt für mysql_fetch_array).
 
  • [erledigt] MySQL: Stored Procedures Beitrag #6
L

LauxAimoEwa

Dabei seit
04.12.2006
Beiträge
2.003
Kann es sein, dass Du nicht genügend Rechte auf die Datenbank hast?
 
  • [erledigt] MySQL: Stored Procedures Beitrag #7
jotobi

jotobi

Threadstarter
Dabei seit
06.07.2005
Beiträge
125
Alter
37
Ne, bin ja gerade nur am testen und bin als root in der datenbank.

Ich hab jetzt mal ein INSERT INTO Befehl in die Prozedur geschrieben. Das funktioniert. Hat vielleicht PHP was gegen SELECT Anweisungen in Stored Procedures?

Das hat jetzt übrigens mit

$sql = "call insertWert()";

geklappt, anders nicht.
 
  • [erledigt] MySQL: Stored Procedures Beitrag #8
L

LauxAimoEwa

Dabei seit
04.12.2006
Beiträge
2.003
Hmpf - die MySQL Syntax für die Stored Procedures kenn ich leider nicht - Aber möglich, dass da noch ein wenig mehr Aufwand dahintersteckt, als bei "Standard"-SQLs....
 
  • [erledigt] MySQL: Stored Procedures Beitrag #9
jotobi

jotobi

Threadstarter
Dabei seit
06.07.2005
Beiträge
125
Alter
37
Aso, ganz vergessen. Wollte ja noch schreiben, dass man dafür die mysqli Funktionen von php benötigt. Damit kann man dann die Stored Procedures dann ausführen. :-)

Das nur noch als Nachtrag!
 
Thema:

[erledigt] MySQL: Stored Procedures

Oben