Почему мой php выдает ошибку при вставке данных в SQL-сервер?

Я пытаюсь заставить PHP вставлять данные POST из моей html-формы в мой SQL Server 2018 на локальном компьютере. Я просмотрел документацию по php и следую ей, но до сих пор не понимаю, почему код выдает ошибку. Имя таблицы, в которую я вставляю данные, называется «ПОЛЬЗОВАТЕЛЬ». Может ли кто-нибудь посмотреть на мой код и сказать мне, что не так?

Я просмотрел различные источники, включая PHP.net и переполнение стека для решения, но не помогает мне решить мою проблему.

PHP-скрипт:

if (isset($_POST['create_acc'])) {

    $username = strip_tags(trim($_POST["username"]));
    $password = strip_tags(trim($_POST["password"]));
    $role = strip_tags(trim($_POST["role"]));
    $pwdhash = password_hash($password, PASSWORD_ARGON2I);


    $sql = "INSERT INTO USER (user_id, password, role) VALUES (?, ?, ?)";
    $params = array($username, $pwdhash, $role);
    $stmt = sqlsrv_query( $conn, $sql, $params);

    if ($stmt){

        $msg = "Account created successfully!";

    }else{

        die(print_r(sqlsrv_errors(), true));
    }

}

Результат:

Array ( 
    [0] => Array ( 
        [0] => 42000 
        [SQLSTATE] => 42000 
        [1] => 156 
        [code] => 156 
        [2] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Incorrect syntax near the keyword 'USER'. 
        [message] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Incorrect syntax near the keyword 'USER'. 
    ) 
)
USER — это зарезервированное слово в SQL Server, не знаю, как его нужно экранировать (или, наоборот, переименовать).
Nigel Ren 05.07.2019 07:38

Действительно ли user_id является именем пользователя?

M. Eriksson 05.07.2019 07:40
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
38
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я только что узнал через 1 минуту после публикации вопросов. «Пользователь» — это зарезервированное ключевое слово в SQL Server. Как только я изменил имя таблицы на USERNAME, все заработало!

Ответ принят как подходящий

Если вы используете зарезервированное ключевое слово в SQL Server (которое вы можете проверить здесь). Вы должны использовать идентификаторы с разделителями.

Это должно работать:

$sql = "INSERT INTO [USER] (user_id, password, role) VALUES (?, ?, ?)";

Другие вопросы по теме