Прежде всего, это как-то связано с .PDO fetch (PDO :: FETCH_ASSOC) не возвращает значения
Я пытаюсь сохранить значения из базы данных в свои переменные $ _SESSSION. Сначала я попытался выбрать все строки, где username = user и password = password и т. Д.
Если он возвращает> 0, я попытался извлечь (PDO :: FETCH_ASSOC), чтобы получить его строки. Проблема в том, что она возвращает> 0, она FETCH_ASSOC
не возвращает значения мне.
Вот что я пробовал до сих пор.
<?php
if(isset($_POST['btn_Save'])){
$uname = $_POST['username'];
$pword = $_POST['password'];
$q = "SELECT * FROM `users` WHERE `username` = :username AND `password` = :password";
$sql = $db->prepare($q);
$sql->bindParam(":username",$uname);
$sql->bindParam(":password",$pword);
$sql->execute();
$rows = $sql->fetch(PDO::FETCH_NUM);
if($rows > 0){
$rows2 = $sql->fetch(PDO::FETCH_ASSOC);
echo $rows2['userID'];
$_SESSION['account'] = $rows2['userID'];
$_SESSION['name'] = $rows2['firstName'];
//echo" <meta http-equiv='refresh' content='0;url=index.php'>";
}
else{
echo"<script>alert('No user found!');</script>";
// echo" <meta http-equiv='refresh' content='0;url=index.php'>";
}
Удалить «$ rows = $ sql-> fetch (PDO :: FETCH_NUM); if ($ rows> 0) {'часть из вашего кода и использовать' $ rows2 = $ sql-> fetch (PDO :: FETCH_ASSOC); if (count ($ rows2)> 0) {' – Saty
Пожалуйста, не храните свои пароли в открытом виде в базе данных - это огромная проблема конфиденциальности, что владелец сервера может видеть все пароли. Вы можете использовать ['password_hash()'] (http://www.php.net/password_hash) и ['password_verify()'] (http://www.php.net/password_verify), чтобы хэшировать пароли (и unencryptable) в базе данных. Если ваша версия PHP <5.5, вы можете использовать [password_compat] (https://github.com/ircmaxell/password_compat), который будет работать в PHP> = 5.3.7. Если ваша версия старше, вы должны обновить свою установку в виде всплывающей поддержки 5.3 в августе 2014 года. – h2ooooooo
Спасибо. Это будет иметь в виду в следующий раз. – Jerlon