2

PHPSELECTSQLクエリを使用する関数があります。このようなクエリでプレースホルダー変数 (?) を使用します。(このプレースホルダーは 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
4

1 に答える 1

2

これをテーブル名やフィールド名に使用することはできません...渡された値のみ...

可能なテーブル名のリストを作成し、それを確認してクエリを作成できます

"SELECT FROM `$table`..." 

チェックに合格した場合

于 2013-04-06T06:28:56.213 に答える