Связанная переменная не изменяется после выполнения() в примере #5 Хранимые процедуры PDO в документации PHP, [дубликат]Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Связанная переменная не изменяется после выполнения() в примере #5 Хранимые процедуры PDO в документации PHP, [дубликат]

Сообщение Anonymous »

Все это время я делал то, что собираюсь объяснить, используя ASP classic и ASP.Net с MSSQL Server, и это прекрасно работает!
Пожалуйста, прочитайте внимательно. Пример №5 взят отсюда: https://www.php.net/manual/en/pdo.prepa ... ements.php
Другие «ссылки» на ответы на мой вопрос, либо предположим, что это работает (например, второй ответ). в хранимых процедурах, MySQL и PHP) или отличается каким-то фундаментальным образом. Именно этот пример (№5 или ответ в последней ссылке) НЕ РАБОТАЕТ, как указано.
Ниже приведен самый простой пример, один из МНОГИХ, и методы подключения, которые я пробовал. это совершенно провально, как и все остальное. SP работает в MariaDb при выполнении, но данные никогда не возвращаются или, по крайней мере, переменная $value никогда не обновляется в PHP. Во всех примерах, которые я пробовал, мне удалось убедиться, что данные доходят до SP и там все работает нормально.
Согласно всем найденным мной примерам (особенно # 5 выше), это должно сработать, но не для меня. В чем может быть проблема? Я просто не вижу и не нахожу этого. Должно быть, мне где-то не хватает знаний.
config.php pdocontacts.php Хранимая процедура MariaDb sp_takes_string_returns_string:
// ЭТО РАБОТАЕТ! //

Код: Выделить всё

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 ;
Вывод pdocontacts.php:

Код: Выделить всё

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**
Вы можете видеть, что «привет» или «olleh» вставляются в контакты в качестве имени.
Какой флаг или что-то еще мне не хватает???

Подробнее здесь: https://stackoverflow.com/questions/790 ... stored-pro
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»