Я новичок в php. У меня есть сайт для входа в систему, где пользователи регистрируются с помощью своих писем. Каждому присваивается auto-increment user_id. Я хочу получить связанный user_id из базы данных и сохранить его в сеансе, чтобы при отправке контента их user_id можно было получить из сеанса и отправить с содержимым. Однако моя функция «get_user_id» не работает, чтобы искать идентификатор пользователя с их адреса электронной почты. Я пробовал использовать всевозможные команды mysqli из fetch_row, get_result, bind_result, и ничто не вернет user_id.Код Mysqli для получения одного результата и возврата его
function get_user_id($email) {
//$email = mysqli_real_escape_string($this->conn, $email);
$query = "SELECT id from users where email=?";
if ($stmt = $this->conn->prepare($query)){
$stmt->bind_param('s',$email);
if($result = $stmt->execute()){
$row=$result->fetch_row();
return $row['id'];
} else return "no ID returned.";
}
}
Edit: сообщение об ошибке я получаю сейчас: Fatal error: Call to a member function fetch_row() on a non-object
Обновление: Это то, что работает - спасибо RikkusRukkus:
function get_user_id($email) {
//$email = mysqli_real_escape_string($this->conn, $email);
$query = "SELECT id from users where email=?";
if ($stmt = $this->conn->prepare($query)){
$stmt->bind_param('s',$email);
if($result = $stmt->execute()){
$stmt->bind_result($user_id);
$stmt->fetch();
return $user_id;
} else return "no ID returned.";
}
}
Предположительно вы проверили базу данных, чтобы убедиться, что адрес, который вы используете существует? – Orbling
Да! Адрес электронной почты существует. Шаг get_user_id происходит после того, как они войдут в систему с их адресом электронной почты (или создайте учетную запись), чтобы письмо было проверено на этом этапе. – thisAnneM
Если подготовка не удалась, ничто не возвращается, судя по этому коду. Возможно, вы захотите вывести сообщение об ошибке, '$ mysqli-> error' - сделать то же самое для идентификатора no, возвращаемого при ошибке' execute() '. – Orbling