I miei tentativi di interrogare MySQL da PHP con una dichiarazione di creazione di una procedura di archiviazione (SP) sono falliti. Non è possibile?Come creare una procedura memorizzata MySQL da PHP?
Se possibile, si prega di fornire un esempio.
I miei tentativi di interrogare MySQL da PHP con una dichiarazione di creazione di una procedura di archiviazione (SP) sono falliti. Non è possibile?Come creare una procedura memorizzata MySQL da PHP?
Se possibile, si prega di fornire un esempio.
Il manuale MySQL ha una chiara panoramica su how to create stored procedures (13.1.15. CREATE PROCEDURE
and CREATE FUNCTION
Syntax).
La prossima domanda è: l'account che usi per accedere al database MySQL ha i diritti di propper per creare effettivamente una procedura?
dettagli su questo argomento si possono trovare qui: 19.2.2. Stored Routines and MySQL Privileges
Hai avuto privilegi sufficienti sull'account che stai collegando da PHP? Da the manual
partire da MySQL 5.0.3, per eseguire il CREATE PROCEDURE o CREATE FUNZIONE dichiarazione, è necessario avere il privilegio CREATE ROUTINE
Vedi anche Stored Routines and MySQL Privileges nel manuale.
Finché:
Poi dovrebbe funzionare. Controlla questi e torna da noi.
Oltre ai privilegi, quello che molto probabilmente potrebbe causare il problema è, che in realtà mysql_query ($ query) può funzionare solo un comando per chiamata!
Quindi quello che devi fare è dividere i comandi in sevqal_query ($ query) -calls.
Voglio dire qualcosa di simile:
$query = "DROP FUNCTION IF EXISTS fnElfProef (accountNr INT)";
mysql_query($query);
$query = "CREATE FUNCTION fnElfProef (accountNr INT)
RETURNS BOOLEAN
BEGIN
DECLARE i, totaal INT DEFAULT 0;
WHILE i < 9 DO
SET i = i+1;
SET totaal = totaal+(i*(accountNr%10));
SET accountNr = FLOOR(accountNr/10);
END WHILE;
RETURN (totaal%11) = 0;
END";
mysql_query($query);
$query = "SELECT * FROM mytable";
mysql_query($query);
Non è possibile utilizzare l'istruzione DELIMITER dall'interno PHP. Pertanto,
1) remove the DELIMITER statements
2)and change all your delimiters to ;
è fastidioso perché ora è necessario avere una versione con delimitatori per lo sviluppo e la sperimentazione in linea di comando MySQL o uno strumento di MySQL come sqlyog o MySQL Workbench, e una versione senza delimitatori da utilizzare tramite il vostro PHP programma.
Se qualcuno conosce un modo migliore, mi piacerebbe sentirlo - (ma non richiamando uno script di shell del sistema operativo -. Che ha troppi problemi di residui)
E avete bisogno di autorizzazioni SUPER.
http://forums.mysql.com/read.php?98,161275,161275 –