Я пытаюсь создать скрипт входа с PHP. Пользователи перенаправляются на него с помощью формы входа в систему с полями имени пользователя и пароля. Моя проблема здесь в том, что mysqli fetch_assoc()
ничего не возвращает. Я попробовал тот же запрос в базе данных, и он работает так, как ожидалось. Я попытался использовать fetch_array
с mysql_assoc или как числовой массив, но все равно не повезло. Я попытался получить доступ как к $row[0]
, так и к $row[password]
для возвращаемого значения, но при запуске я получаю «строки не найдены, ничего не печатать», поэтому я думаю, что все работает хорошо до этого момента.Получить значение из базы данных
Любые подсказки о том, что мне может не хватать?
<?php
$con=mysqli_connect('localhost','root','','site');
if(!$con)
{
die('Could not connect to database : ' . mysql.error());
}
$result=mysqli_query($con,'SELECT Password FROM users WHERE Username="$_POST[iusrname]" LIMIT 1');
if (!$result)
{
Die("Could not successfully run query from DB: " . mysql_error());
}
$row = mysqli_fetch_assoc($result);
if (mysqli_num_rows($result) == 0)
{
die("No rows found, nothing to print");
}
if($_POST[ipwd] == '$row[password]')
{
echo "Authentication succeeded.You will be redirected to the main page shortly";
$_SESSION['loged']=true;
$_SESSION['user']=$_POST[iusrname];
}
else
{
die("could not authenticate user");
}
mysqli_close($con);
?>
Для форматирования кода вы должны выбрать весь свой код, а затем нажать Ctrl + K вместо тысячи обратных выходов. – 11684
Вы используете одинарные кавычки для определения своей строки SQL, которая рассматривает ее как литерал; это не интерполирует переменные вообще. Поскольку вы используете mysqli - почему бы не сделать этот SELECT в подготовленный оператор? – andrewsi
Яркое предупреждение: я собираюсь уменьшить каждый ответ, который просто вставляет '$ _POST ['iusrname']' в SQL, даже не потрудившись избежать его. – cHao