Пожалуйста, прочитайте внимательно. Пример №5 взят отсюда: https://www.php.net/manual/en/pdo.prepa ... ements.php
Другие «ссылки» на ответы на мой вопрос, либо предположим, что это работает (например, второй ответ). в хранимых процедурах, MySQL и PHP) или отличается каким-то фундаментальным образом. Именно этот пример (№5 или ответ в последней ссылке) НЕ РАБОТАЕТ, как указано.
Ниже приведен самый простой пример, один из МНОГИХ, и методы подключения, которые я пробовал. это совершенно провально, как и все остальное. SP работает в MariaDb при выполнении, но данные никогда не возвращаются или, по крайней мере, переменная $value никогда не обновляется в PHP. Во всех примерах, которые я пробовал, мне удалось убедиться, что данные доходят до SP и там все работает нормально.
Согласно всем найденным мной примерам (особенно # 5 выше), это должно сработать, но не для меня. В чем может быть проблема? Я просто не вижу и не нахожу этого. Должно быть, мне где-то не хватает знаний.
config.php
Код: Выделить всё
Код: Выделить всё
// ЭТО РАБОТАЕТ! //
Код: Выделить всё
DELIMITER $$
CREATE PROCEDURE `sp_takes_string_returns_string`(INOUT `astr` VARCHAR(100))
BEGIN
INSERT contacts (name, age, email) VALUES (astr, 1, 'im@mywittsend.com');
SELECT REVERSE(astr) INTO astr;
END$$
DELIMITER ;
Код: Выделить всё
array(5) { \[0\]=\> object(Contact)#3 (4) { \["id"\]=\> int(5) \["name"\]=\> string(5) "hello"
\["age"\]=\> int(1) \["email"\]=\> string(15) "im@mywittsend.com" } \[1\]=\> object(Contact)#4 (4)
{ \["id"\]=\> int(4) \["name"\]=\> string(5) "hello" \["age"\]=\> int(1) \["email"\]=\> string(15)
"im@mywittsend.com" } \[2\]=\> object(Contact)#5 (4) { \["id"\]=\> int(3) \["name"\]=\> string(5)
"hello" \["age"\]=\> int(1) \["email"\]=\> string(15) "im@mywittsend.com" } \[3\]=\>
object(Contact)#6 (4) { \["id"\]=\> int(2) \["name"\]=\> string(5) "hello" \["age"\]=\> int(1)
\["email"\]=\> string(15) "im@mywittsend.com" } \[4\]=\> object(Contact)#7 (4) { \["id"\]=\> int(1)
\["name"\]=\> string(5) "hello" \["age"\]=\> int(1) \["email"\]=\> string(15) "im@mywittsend.com" }
}
procedure returned hello
Код: Выделить всё
SELECT REVERSE(astr) INTO astr;
INSERT contacts (name, age, email) VALUES (astr, 1, 'im@wittsend.com');
Код: Выделить всё
array(7) { [0]=> object(Contact)#3 (4) { ["id"]=> int(7) ["name"]=> string(5) "olleh"
["age"]=> int(1) ["email"]=> string(15) "im@wittsend.com" } [1]=> object(Contact)#4 (4) {
["id"]=>...
**procedure returned hello**
Какой флаг или что-то еще мне не хватает???
Подробнее здесь: https://stackoverflow.com/questions/790 ... stored-pro