$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();
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Вообщем ситуация в том, чтобы в блоке вывести только те новости, которые принадлежат к определенной категорииУже долго сижу над этим, но не могу...
Я использую Elasticsearch для поиска заведений по названиюМне нужно отсортировать результаты по количеству совпадений (_score) и расстоянию до координат...
Есть задача: нужно проверить на предмет наличия значений в ряде переменныхЕсть ли какой-то "человеческий" способ или каждую нужно перебирать...