我有一个复杂的3层查询,我希望将表名作为参数传递。 我使用代码喜欢这个:
DB::query(Database::SELECT, 'SELECT
SUM(volume) AS `volumeTotal`,
MIN(volume) AS `volumeMin`,
MAX(volume) AS `volumeMax`,
AVG(volume) AS `volumeAverage`,
STD(volume) AS `volumeSD`
FROM (
SELECT TIMEDIFF (DT,CAST( @dt AS DATETIME )) AS Ival, CAST( @dt AS DATETIME ) AS `start` , @dt := DT AS `stop` , `volume`
FROM ( SELECT @dt := NULL) dt,
( SELECT * FROM :table WHERE id = :XID) vals
ORDER BY dt ASC) vI')
->param(':table', $tableName)
->param(':XID', $ID)
->execute();
我不适合使用查询构建器(我认为这不是最佳方式)。
当然,我可以直接将参数输入到查询中,如“.$tableName.
”,但我认为应该有更正确的方法。
问题是:
如何使用Kohana将表名作为参数传递给数据库查询?
答案 0 :(得分:0)
需要使用DB::expr($tableName)
代替$tableName
。