使用PDO语句重命名数据库中的表

时间:2019-04-27 16:28:11

标签: php database pdo

我正在建立一个社交网站。有该设置页面,用户可以在其中更新他/她的信息。例如,他/她可以更新用户名,问题是有些表的名称像($ username。“ _posts”),因此,如果用户更新了用户名,我当然可以再次访问这些表。因此,我想使用更新的用户名重命名这些表,以便能够在其他页面上访问它们。

我尝试过:

$rename_table = "RENAME `" . $old_username . "_posts` TO `" . $updated_username . "_posts`";                    $prepare_stmt = $conn->prepare($rename_table);
$prepare_stmt->execute();

,并且也没有(`),例如:

$rename_table = "RENAME " . $old_username . "_posts TO " . $updated_username . "_posts";                    $prepare_stmt = $conn->prepare($rename_table);
$prepare_stmt->execute();

我希望表名可以更新,但是我总是会收到此错误:

SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法有一个错误;请参见语法。检查与您的MariaDB服务器版本相对应的手册以获取正确的语法,以在第1行的'some_username_posts TO some_newusername_posts'附近使用

注意:我正在使用PDO。

1 个答案:

答案 0 :(得分:1)

  

问题在于,有些表的名称类似于( $username . "_posts" )

不要那样做。 MySQL / MariaDB不能很好地处理具有大量表的模式。

使用一个表存储所有帖子,并将用户的ID或名称存储为该表中的列。

话虽如此,您的问题是您要使用的命令被称为RENAME TABLE,而不仅仅是RENAME