#php #mysql #sql #xampp
#php #mysql #sql #xampp
Вопрос:
Моя цель — отправить регистрационную информацию пользователя в базу данных XAMPP SQL. Данные поступают успешно, но программа выдает ошибку «У вас ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования near ‘?,?,?,?)’ в строке 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. Вы связываете 6 значений, но оператор ожидает 4 значения
2. Должен ли быть последний ; внутри
"INSERT INTO users(idUsers, uidUsers, emailUsers, pwdUsers) VALUES (?,?,?,?);"
?3. @MsuArven, если я ясно вижу, привязаны только 4 значения
4. @T.Mas Я не видел, чтобы это имело значение, но я удалил это, чтобы быть уверенным.
Ответ №1:
Вы уже выполнили свой запрос с вызовом на mysqli_stmt_execute($stmt)
; вызов на mysqli_query
завершается неудачно, потому что эта функция предназначена для выполнения обычных (не подготовленных) запросов, поэтому ?
in $sql
не заменяются. Вместо этого вы должны проверять статус возврата вызова mysqli_stmt_execute:
if(!mysqli_stmt_execute($stmt)){
die(mysqli_error($conn));
exit();
}
else{
echo("YAY");
}