fetchAll函数中表名的占位符变量

时间:2013-04-06 06:21:31

标签: php mysql sql

我在PHP中有一个使用SELECT SQL查询的函数。 我在查询中使用占位符变量(?),就像这样。 (此占位符用于mysql数据库中的表名):

protected function _fetchPreviousShiftData($table, $report_time)
{

$query = "SELECT * FROM ? WHERE report_date=? and shift=?";
$previousShiftData = $this->_getDbConnection()->fetchAll($query,array($table, date("Y-m-d"), $this->_shiftValue($report_time, 8)));

return $previousShiftData;
}

但我在$ table变量中有错误,我该如何使用“?”对于$ table变量? 错误是这样的:

PHP Fatal error:  Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''adsl_support' WHERE report_date='2013-04-06' and shift='18-2'' at line 1' in C:\php_shared_lib\Zend\Db\Statement\Pdo.php:228

1 个答案:

答案 0 :(得分:2)

您不能将此用于表名或字段名称... 仅适用于传递的值......

您可以列出可能的表名, 检查它并使用

构建查询
"SELECT FROM `$table`..." 

如果检查通过