我正在建立一个社交网站。有该设置页面,用户可以在其中更新他/她的信息。例如,他/她可以更新用户名,问题是有些表的名称像($ 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。
答案 0 :(得分:1)
问题在于,有些表的名称类似于
( $username . "_posts" )
不要那样做。 MySQL / MariaDB不能很好地处理具有大量表的模式。
使用一个表存储所有帖子,并将用户的ID或名称存储为该表中的列。
话虽如此,您的问题是您要使用的命令被称为RENAME TABLE
,而不仅仅是RENAME
。