Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP + procedura MySQL
Forum PHP.pl > Forum > PHP
werk
Witam...

Mam pewien problem.
Rozumiem ze procedury w mysql dostępne sa od wersji 5 i zeby z nich korzystać trzeba używac mysqli_....
Tak więc mam kod:

  1. <?php
  2. $link = mysqli_connect("localhost","root","");
  3. mysqli_select_db($link, "cms");
  4.  
  5. $proc = "
  6. DROP PROCEDURE IF EXISTS pobierz();
  7. DELIMITER
  8. CREATE PROCEDURE pobierz (out nazwa VARCHAR(50))
  9. BEGIN
  10.    SELECT nazwa_dzialu INTO nazwa FROM dzial LIMIT 0, 1;
  11. END
  12.  
  13. DELIMITER;";
  14.  
  15. mysqli_query($link, $proc);
  16.  
  17. if ($w = mysqli_multi_query($link, "CALL pobierz();"))
  18. {
  19.    if ($result = mysqli_store_result($link))
  20.    {
  21.          while ($row = mysqli_fetch_row($result))
  22.          {
  23.                print($row[0]);
  24.          }
  25.    }else print('ERROR P2!');
  26. }else print('ERROR P1!');
  27. ?>


tabela w bazie to:

id INT
nazwa_dzialu VARCAR(50)
io INT

Jak powinien wygladac kod zeby poprawnie wywolac procedure ?
I czy procedura jest dobrze napisana ?
wrzasq
no to zacznij uzywac SQLa, a nie instrukcji klienta MySQL. DELIMITER do niczego ci nie jest potrzebny, on mowi standardowemu klientowi MySQL czym rozdzielac komendy.

  1. <?php
  2. mysqli_query($link, 'DROP PROCEDURE IF EXISTS pobierz()');
  3. mysqli_query($link, 'CREATE PROCEDURE pobierz (out nazwa VARCHAR(50))
  4. BEGIN
  5.    SELECT nazwa_dzialu INTO nazwa FROM dzial LIMIT 0, 1;
  6. END');
  7. ?>


poza tym w tym wypadku nie potrzebujesz BEGIN ... END - jedna instrukcje mozesz zapisac bez tego smile.gif.
werk
Niestety dalej to samo ... wykonanie zapytania kończy się niepowidzeniem:

Oto kod:

  1. <?php
  2. mysqli_query($link, 'DROP PROCEDURE IF EXISTS pobierz()');
  3. if(mysqli_query($link,"CREATE PROCEDURE pobierz (out nazwa VARCHAR(50))
  4. BEGIN
  5.   SELECT nazwa_dzialu INTO nazwa FROM dzial LIMIT 0, 1;
  6. END") == false) { print('głupia procedura nie działa :/'); die(); }
  7.  
  8. if ($w = mysqli_query($link, "CALL pobierz() "))
  9. {
  10.    if ($result = mysqli_store_result($link, $w))
  11.    {
  12.          while ($row = mysqli_fetch_assoc($result))
  13.          {
  14.                print($row['nazwa']);
  15.          }
  16.    }else print('ERROR P2!');
  17. }else print('ERROR P1!');
  18. ?>


Może coś jeszcze przeoczyłem ?
wrzasq
mysqli_error
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.