Переименуйте таблицу в базе данных, используя операторы PDO - PullRequest
0 голосов
/ 27 апреля 2019

Я создаю сайт социальной сети. Это страница настроек, где пользователь может обновить свою информацию. Например, он / она может обновить имя пользователя, проблема в том, что есть некоторые таблицы с такими именами ($ 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, на предмет правильного синтаксиса для использования рядом с 'some_username_posts TO some_newusername_posts' в строке 1

ПРИМЕЧАНИЕ. Я использую PDO.

1 Ответ

1 голос
/ 27 апреля 2019

проблема в том, что есть некоторые таблицы, которые названы как ( $username . "_posts" )

Не делай этого. MySQL / MariaDB плохо обрабатывает схемы с очень большим количеством таблиц.

Используйте одну таблицу для хранения всех сообщений и сохраните идентификатор или имя пользователя в виде столбца в этой таблице.

При этом ваша проблема в том, что команда, которую вы пытаетесь использовать, называется RENAME TABLE, а не просто RENAME.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...