我有简单的查询:
$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())。
我做错了什么?
答案 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`"
);