Возникла ошибка с подготовленными запросами, в чем проблема?

Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean given in ... 
Warning: mysqli_stmt_execute() expects parameter 1 to be mysqli_stmt, boolean given in ...
Warning: mysqli_stmt_close() expects parameter 1 to be mysqli_stmt, boolean given in ...

Вот мой код:
$login = $_POST['login'];
$email = $_POST['mail'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
$sql = mysqli_prepare($con, "INSERT INTO table VALUES (?, ?,?)");
mysqli_stmt_bind_param($sql,'sss', $login, $email, $password);
mysqli_stmt_execute($sql);
mysqli_stmt_close($sql);
  • Вопрос задан
  • 74 просмотра
Пригласить эксперта
Ответы на вопрос 1
Доброго дня.

1.
mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean given in

Говорит нам о том, что первый параметр не является экземпляром класса mysqli_stmt и ошибку следует искать выше. скорее всего на этой строчке $sql равен false

2. Пойдём немного выше и добавим отладку после строки
$sql = mysqli_prepare($con, "INSERT INTO table VALUES (?, ?,?)");
// debug
if (!($sql instanceof mysqli_stmt)) {
   die($con->error);
}

Это сработает, если ваше соединение с базой данных установлено без ошибок.

3. Добавляем отладку соединения с БД
Найдите строчку, содержащую $con = mysqli_connect и добавьте после неё отладку
if (!$con) {
    die('Connect Error: ' . mysqli_connect_error());
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы