Вот простейший код:
<?php
$db = new PDO("mysql:host=localhost;dbname=test","root","");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM :table";
$table='news';
$arr = array(':table'=>$table);
$prep = $db->prepare($sql);
$prep->execute($arr);
Выводит фатальную ошибку:
Fatal error: Uncaught PDOException: 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 ''news'' at line 1 in E:\Desktop\Server\data\htdocs\project001\index.php:9 Stack trace: #0 E:\Desktop\Server\data\htdocs\project001\index.php(9): PDOStatement->execute(Array) #1 {main} thrown in E:\Desktop\Server\data\htdocs\project001\index.php on line 9
То-же самое и с псевдопеременными ? и т.д.
Гуглил, ничего не нашел. С bindParams все окей.