Собственно при использовании функции storeUser выходит данная ошибка:
Call to a member function bind_param() on boolean in...
Вот сама функция, ошибка происходит в строке с $stmt->bind_param, я указал в коде
public function storeUser($user_login, $user_password, $user_name, $user_middle_name, $user_last_name, $user_group) {
$uuid = uniqid('', true);
$hash = $this->hashSSHA($user_password);
$user_encrypted_pass = $hash["user_encrypted_pass"]; // encrypted password
$user_salt = $hash["user_salt"]; // salt
$stmt = $this->conn->prepare("INSERT INTO users_table(user_uniqueid, user_login, user_encrypted_pass, user_salt, user_name, user_middle_name, user_last_name, user_group, user_created) VALUES(?, ?, ?, ?, ?, ?, ?, ?, NOW())");
Ошибка здесь-> $stmt->bind_param("ssssssss", $uuid, $user_login, $user_encrypted_pass, $user_salt, $user_name, $user_middle_name, $user_last_name, $user_group);
$result = $stmt->execute();
$stmt->close();
// check for successful store
if ($result) {
$stmt = $this->conn->prepare("SELECT * FROM users_table WHERE user_login = ?");
$stmt->bind_param("s", $user_login);
$stmt->execute();
$user = $stmt->get_result()->fetch_assoc();
$stmt->close();
return $user_login;
} else {
return false;
}
}
mysqli::prepare возвращает false в случае если не удалось подготовить запрос. Это может происходить если в запросе неверно указана таблица, или поле таблицы, или в запросе используется неверный синтаксис.
Проверить что произошла ошибка и узнать в чем причина можно просмотрев содержимое $this->conn->error и $this->conn->errno так:
$stmt = $this->conn->prepare("INSERT INTO users_table(user_uniqueid, user_login, user_encrypted_pass, user_salt, user_name, user_middle_name, user_last_name, user_group, user_created) VALUES(?, ?, ?, ?, ?, ?, ?, ?, NOW())");
if( ! $stmt ){ //если ошибка - убиваем процесс и выводим сообщение об ошибке.
die( "SQL Error: {$this->conn->errno} - {$this->conn->error}" );
}
$stmt->bind_param("ssssssss", $uuid, $user_login, $user_encrypted_pass, $user_salt, $user_name, $user_middle_name, $user_last_name, $user_group);
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости