我需要知道我可以在PDO预处理语句中使用问号(?
)作为表名或不使用。
$table = $_POST['table'];
$id = $_POST['id'];
$sql = "UPDATE ? SET priority = priority + 1 WHERE id = ?";
$q = $db->prepare($sql);
$q->execute(array($table,$id));
我收到了这个错误:
警告:PDO :: prepare()[pdo.prepare]:SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;检查与您的MySQL服务器版本对应的手册,以便在'附近使用正确的语法? SET priority = priority + 1 WHERE id =?'
答案 0 :(得分:0)
除了这个简单的问题,还有另外一个 - 你的代码闻起来很糟糕的数据库设计。在正确规划的数据库中,从不需要通过POST请求接收表名。
您很可能使用多个表,只需要使用一个表。
答案 1 :(得分:-3)