Здесь есть несколько проблем.Во-первых, вы не проверяете состояние возврата вашего $connection->exec
вызова, которое будет ложным, поскольку у вас есть синтаксические ошибки, отсутствует ;
в конце первой строки, т. Е. Оно должно быть
DROP FUNCTION IF EXISTS return_id;
Однако PDO :: exec не будет выполнять несколько операторов, поэтому вам все равно нужно поместить определение функции в отдельный exec
.
Далее: RETURN
должно быть RETURNS
Наконец, вы не проверяете результат вызова $connection->query
, который также возвращает false
(логическое значение, которое не имеет функции-члена fetchAll), потому что это не удалось из-за предыдущих ошибок.
Чтобы это работало, вам нужно изменить код на этот.Однако вам следует также проверить результаты звонков на номера $connection->exec
и $connection->query
.
$connection->exec('DROP function IF EXISTS return_id');
$connection->exec('CREATE FUNCTION return_id(id int(11)) RETURNS int(11) BEGIN return id; END');
$fetch=$connection->query('select *,return_id(id) as new_id from category')->fetchall();
print_r($fetch);
.