Я пытался решить эту проблему самостоятельно и за жизнь мне не может это исправить ..mysqli_num_rows = 0, когда он должен быть 1
//If they are, retreive them from the Person table
var_dump($_POST['username']);
var_dump($_POST['password']);
$select = $this-> doQuery("SELECT * FROM Person WHERE username = '{$_POST['username']}' AND password = '".md5($_POST['password'])."'");
var_dump($select);
try {
if (mysqli_num_rows($select) > 0){
var_dump(mysqli_num_rows($select));
//fetching username and password from database
$fetch_array = mysqli_fetch_assoc($select);
var_dump($fetch_array);
//Building a session for the user
$_SESSION['username'] = $fetch_array['username'];
//var_dump($_SESSION['username']);
//Redirecting the user to the index page
header('Location:index.php');
return true;
}
Эти два var_dumps на имя пользователя и пароль на 4-й и 5-й линии вернулся в этом:
string(8) "johnny03"
string(9) "password3"
object(mysqli_result)#3 (5) { ["current_field"]=> int(0) ["field_count"]=> int(8) ["lengths"]=> NULL ["num_rows"]=> int(0) ["type"]=> int(0) }
значения, которые я введенные как для пароля и имени пользователя являются действительными (они находятся в базе данных под правильными колоннами, поверьте мне). У меня есть ощущение, что что-то не так с моим запросом на выбор, потому что дамп var на mysqli_num_rows ($ select) ничего не возвращает. Как сказано, я пробовал почти каждое изменение запроса, о котором я мог думать, чтобы сделать он работает и до сих пор ничего: [Может ли кто-нибудь помочь?
Является ли имя пользователя pre- и suffixed фигурной скобкой? Это не опечатка? – Daneo
И делает 'var_dump (md5 ($ _ POST ['password']));' дает тот же пароль, который находится в базе данных в столбце пароля? Также вы уязвимы для SQL-инъекций в этом запросе. – drew010
+1 к @ drew10. Если вы уверены, что имя пользователя верное, необходимо проверить шифрование пароля в базе данных. – janenz00