Procedury składowane w MySQL, problem z wywołaniem


(kam104) #1

Witam,

 

Mam problem z procedurami składowanymi w MySQL. Gdy wywołuję je przez program do zarządzania bazą (w tym przypadku HeidiSQL) wszystko jest ok, ale gdy chcę wywołać je przez PHP (mysqli) to nic się nie dzieje. Do tego problem jest tylko z Insertem.

 

Procedura:

CREATE PROCEDURE `addNews`(IN `date` DATE, IN `content` TEXT, IN `userid` INT)
                BEGIN
                        INSERT INTO `news` (`date`, `content`, `user_id`) VALUES (date, content, userid);
                END

Wywołanie:

$mysqli->query("CALL addNews('$date', '$content', '$userId[0]');");

Jeśli chodzi o procedury, które mają w sobie jedynie select to wszystko działa.

Jakieś pomysły?


(pain3hp) #2

Zaczął bym od zweryfikowania wartości jaką zwraca funkcja query

$result = $mysqli->query("CALL addNews('$date', '$content', '$userId[0]');");
echo var_dump($result);

Na wszelki wypadek sprawdziłbym cały string i wkleił go do tego Twojego programu bazodanowego, sprawdził czy procedura zadziałała poprawnie

echo "CALL addNews('$date', '$content', '$userId[0]');"

Możesz także wykonać zwykłego inserta czyli dokłądnie takiego samego jaki jest w procedurze, ale też z $mysqli->query() aby upewnić się że chodzi wyłącznie o wywołanie procedury.

 

Zwerifikowałbym także uprawnienia użytkowników bazy danych. Kto zrobił procedurę? Kto próbuje jej użyć?