Недавно я переключил свой код с mysql на mysqli OOP для лучшей практики. Я пытаюсь получить user_id
из моей таблицы mysql и сохранить его в $_SESSION['user_id']
. Я пробовал много разных итераций моего кода и работал над ним часами, но не повезло. На данный момент $_SESSION['user_id']
ничего не возвращает. Он работает с моим старым кодом mysql, поэтому я знаю, что это не проблема с моей таблицей. Я все еще новичок в mysqli, и я был бы очень признателен за любую помощь в этом вопросе.извлечение идентификатора пользователя из таблицы входа в систему SQL
Вот PHP:
<?php
session_start();
$con = new mysqli("localhost","root","pw","db");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
if(isset($_POST['submit'])){
$query = "SELECT * FROM tapp_login WHERE username = ? AND password = ? LIMIT 1";
$username = $_POST['user_name'];
$password = $_POST['pwd'];
$stmt = $con->prepare($query);
$stmt->bind_param('ss', $username, $password);
$stmt->execute();
$stmt->bind_result($username, $password);
$stmt->store_result();
if($stmt->num_rows == 1){ //To check if the row exists
while($row = $stmt->fetch()){ //fetching the contents of the row
$_SESSION['user_id'] = $row[1];
$_SESSION['LOGIN_STATUS']=true;
$_SESSION['user_name'] = $username;
echo 'true';
}
}
else {
echo 'false';
}
$stmt->free_result();
$stmt->close();
}
else{
}
$con->close();
?>
Проверка работы и имя пользователя успешно хранится в сессии. Я думаю, что ошибка в $row = $stmt->fetch()
, но я не могу понять это. Заранее спасибо!
Что вы получаете с 'var_dump ($ строки);'? – kero
У меня есть AJax, для которого требуется результат «истинного» эха. Когда я попытался поместить var_dump ($ row); внутри цикла while моя проверка больше не работает. Поэтому, если я делаю то же самое в печатной версии переменной строки за пределами цикла, я получаю «NULL». Я не уверен, что это хороший или даже правильный метод. – Rob
При отладке Ajax вы можете просто сделать прямой вызов сценария в своем браузере, после чего вы сможете просмотреть результаты. –