Moje próby wysłania zapytania do MySQL z PHP za pomocą instrukcji create procedury sklepowej (SP) zakończyły się niepowodzeniem. Czy to nie jest możliwe?Jak utworzyć procedurę przechowywaną MySQL z PHP?
Jeśli to możliwe, proszę podać przykład.
Moje próby wysłania zapytania do MySQL z PHP za pomocą instrukcji create procedury sklepowej (SP) zakończyły się niepowodzeniem. Czy to nie jest możliwe?Jak utworzyć procedurę przechowywaną MySQL z PHP?
Jeśli to możliwe, proszę podać przykład.
Podręcznik MySQL ma przejrzysty przegląd o how to create stored procedures (13.1.15. CREATE PROCEDURE
and CREATE FUNCTION
Syntax).
Kolejne pytanie brzmi: czy konto, którego używasz, aby uzyskać dostęp do bazy danych MySQL, ma prawo do utworzenia procedury?
Szczegóły dotyczące tej kwestii można znaleźć tutaj: 19.2.2. Stored Routines and MySQL Privileges
Masz wystarczające przywileje na koncie, z którym łączysz się z PHP? Od the manual
Począwszy od MySQL 5.0.3, wykonanie europejskiego CREATE PROCEDURE lub CREATE FUNCTION oświadczenie, konieczne jest, aby mieć TWORZENIE rutynowej przywilej
Zobacz również Stored Routines and MySQL Privileges w instrukcji.
Dopóki:
następnie przechowywano powinno działać. Sprawdź je i skontaktuj się z nami.
Oprócz przywilejów, co może spowodować całkiem prawdopodobnie problem jest, że faktycznie mysql_query ($ query) może pracować tylko jedno polecenie za rozmowę!
To, co musisz zrobić, to podzielić polecenia na sevaral mysql_query ($ query) -calls.
co mam na myśli coś takiego:
$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);
Nie można użyć instrukcji DELIMITER z poziomu PHP. Dlatego
1) remove the DELIMITER statements
2)and change all your delimiters to ;
Jest to denerwujące, bo teraz trzeba mieć wersję z ogranicznikami dla rozwoju i testowania w wierszu poleceń MySQL lub narzędzia MySQL jak SQLyog lub warsztatu MySQL, a wersja bez ograniczników korzystać za pośrednictwem PHP program.
Jeśli ktoś zna lepszy sposób, chciałbym to usłyszeć - (ale nie przez wywołanie skryptu powłoki OS. - że ma zbyt wiele problemów resztkowe)
I trzeba SUPER uprawnienia.
http://forums.mysql.com/read.php?98, 161275,161275 –