查询中包含表名的SQL SELECT

时间:2012-02-15 12:10:44

标签: mysql

我有简单的查询:

$table_name = 'v_c_holi_2012';

$STH_h3 = $DBH_R->query("SELECT DATE(date_time) AS day_h

                          FROM `$table_name`
                     ");

它工作正常。 但是我必须用表名做这个查询,当我尝试这个时:

$table_name = 'v_c_holi_2012';

$STH_h3 = $DBH_R->query("SELECT `$table_name`.DATE(date_time) AS day_h

                          FROM `$table_name`
                     ");

$table_name = 'v_c_holi_2012';

$STH_h3 = $DBH_R->query("SELECT v_c_holi_2012.DATE(date_time) AS day_h

                          FROM `$table_name`
                     ");

这不起作用(致命错误:在非对象上调用成员函数fetch_assoc())。

我做错了什么?

3 个答案:

答案 0 :(得分:2)

date函数不应具有table前缀,因为它是系统函数。 相反,您需要将表别名放在字段date($table_name.date_time)之前。

顺便说一下,如果只选择一个表,则不需要。

答案 1 :(得分:0)

我相信$table_name.DATE(date_time)应为DATE($table_name.date_time)

答案 2 :(得分:0)

您应该将表名应用于表中的内容(即字段名称),而不是DATE函数(与表无关)。

$table_name = 'v_c_holi_2012';

$STH_h3 = $DBH_R->query(
    "SELECT DATE(`$table_name`.`date_time`) AS `day_h`
    FROM `$table_name`"
);