У меня уже несколько дней не получается разобраться с тем, какую процедуру необходимо создать, чтобы код ниже работал. Если кто знает, напишите. Пример из документации (https://www.php.net/manual/ru/pdo.prepared-statements.php): Код (Text): <?php $stmt = $dbh->prepare("CALL sp_returns_string(?)"); $stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000); $stmt->execute(); print "процедура вернула $return_value\n"; ?> Спойлер: Моё текущее достижение (но я хочу, как в примере!) Код (Text): DELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_returns_string`(OUT `sot` INT) BEGIN SET sot = 5; SELECT sot; END$$ DELIMITER ; Код (Text): $row = $dbh->prepare("CALL sp_returns_string(@p0)"); $row->execute(); $result = $row->fetch(); echo $result['sot'];
Я кое-где прочитал, что процедура MySQL не может возвращать значение напрямую. Т.е. она может вернуть только массив, где будет переменная со значением. Интересное, почему тогда в документации говорится именно о процедуре, и дан, по видимому, не работающий пример: