PDO Mysql создать функцию и использовать в select - PullRequest
0 голосов
/ 24 апреля 2018

Я хочу создать функцию MySQL в моей настройке PDO.

$connection->exec('
DROP FUNCTION IF EXISTS return_id
CREATE FUNCTION return_id(id int(11)) RETURN int(11)
BEGIN
return id;
END');

$fetch=$connection->query('select *,return_id(id) as new_id from category')->fetchall();
print_r($fetch);

Я получаю ошибку:

FATAL ERROR: UNCAUGHT ERROR: CALL TO A MEMBER FUNCTION FETCHALL() ON BOOLEAN

1 Ответ

0 голосов
/ 24 апреля 2018

Здесь есть несколько проблем.Во-первых, вы не проверяете состояние возврата вашего $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);
.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...