$command = Yii::$app->db->createCommand("SELECT func(:name)")
->queryScalar([':name' => $name_f]);
Пытаюсь вызывать так, но выдаёт ошибку
SQLSTATE[HY093]: Invalid parameter number: no parameters were bound The SQL being executed was: SELECT func(:name FROM film)'
Где func - имя функции, name - поле в таблице БД, name_f - данные, записываемые в БД.
Сама функция:
DROP FUNCTION IF EXISTS func;
DELIMITER $$;
CREATE FUNCTION func(nameFilm varchar(200))
RETURNS INT
language sql
BEGIN
declare countRow INT default 0;
DECLARE idRow INT DEFAULT 0;
SELECT count(*), id INTO countRow, idRow
FROM `film`
WHERE `name` LIKE nameFilm
GROUP BY name;
IF countRow > 0 THEN
UPDATE `film` SET name = nameFilm WHERE id = idRow;
ELSE
INSERT film (name) VALUES (nameFilm);
SELECT id INTO idRow FROM film WHERE name LIKE nameFilm;
END IF;
RETURN idRow;
END$$;
DELIMITER ;
Согласно документации queryScalar() не принимает каких-либо аргументов.
Попробуйте сделать bindParam() или bindValue() (разница хорошо описана тут):
$command = Yii::$app->db->createCommand("SELECT func(:name)")
->bindValue(':name', $name_f)
->queryScalar();
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости