SQL выдает синтаксическую ошибку с подготовленными операторами «рядом»?,?,?,?) В строке 1 - PullRequest
0 голосов
/ 12 марта 2019

Моя цель - отправить информацию для входа пользователя в базу данных XAMPP SQL. Данные попадают туда успешно, но программа выдает ошибку «В вашем синтаксисе SQL есть ошибка; обратитесь к руководству, соответствующему вашей версии сервера MariaDB, для правильного синтаксиса для использования рядом с«?,?,?,?) »В строке 1"

Я искал ответ на этот конкретный вопрос, но пока не нашел решения.

    $password = $_POST['pwd'];
    $email = $_POST['email'];
    $username = $_POST['uid'];
    $sql = "INSERT INTO users(idUsers, uidUsers, emailUsers, 
    pwdUsers) VALUES (?,?,?,?);";
    $idnum = "";
    $hashpwd = password_hash($password, PASSWORD_DEFAULT);
    $stmt = mysqli_stmt_init($conn);
    mysqli_stmt_prepare($stmt, $sql);
    mysqli_stmt_bind_param($stmt, "ssss",$idnum, $username, $email, 
    $hashpwd);
    mysqli_stmt_execute($stmt);
    if(!mysqli_query($conn, $sql)){

        die(mysqli_error($conn));
        exit();

    }

        else{
            echo("YAY");
    }

В журналах ошибок PHP и SQL ничего не отображается, и я проверил ошибки в остальной части кода, это единственная часть, которая выдает ошибки. Похоже, есть много сообщений на эту тему. Я просмотрел многие из них и не могу найти эту проблему.

Любая помощь будет оценена!

1 Ответ

1 голос
/ 12 марта 2019

Вы уже выполнили запрос, позвонив по номеру mysqli_stmt_execute($stmt); вызов mysqli_query не выполняется, потому что эта функция предназначена для выполнения обычных (не подготовленных) запросов, поэтому ? в $sql не заменяются. Вы должны проверить статус возврата вызова mysqli_stmt_execute вместо:

if(!mysqli_stmt_execute($stmt)){
    die(mysqli_error($conn));
    exit();
}
else{
    echo("YAY");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...