如何将表名作为参数传递给Kohana 3中的数据库查询

时间:2011-02-23 09:56:23

标签: php database parameters kohana

我有一个复杂的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将表名作为参数传递给数据库查询?

1 个答案:

答案 0 :(得分:0)

需要使用DB::expr($tableName)代替$tableName