Php 如何在Kohana3中将表名作为参数传递给数据库查询
我有一个复杂的三层查询,我希望将表名作为参数传递。 我使用的代码如下所示:Php 如何在Kohana3中将表名作为参数传递给数据库查询,php,database,parameters,kohana,Php,Database,Parameters,Kohana,我有一个复杂的三层查询,我希望将表名作为参数传递。 我使用的代码如下所示: 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 (
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将表名作为参数传递给数据库查询?需要使用
DB::expr($tableName)
而不是$tableName您已经在做->param(':table',$tableName)
将DB::expr()插入错误的位置。很抱歉