Я пытаюсь создать страницу входа в систему, используя php и sql. Это мой PHP код, который получает данные имени пользователя и пароля от MySQL и проверяет, если они правы, так что пользователь получает авторизовались я получаю эту ошибку:.Ошибка входа в PHP SQL
Call to a member function fetch() on a non-object
на линии:
$row = $result->fetch(PDO::FETCH_ASSOC);
Вот мой код:
<?php session_start();
$db = new PDO("mysql:host=localhost;dbname=database","user","pass");
if(mysqli_connect_errno())
{
echo "fail!". mysqli_connect_errnor();
}
$first =$_POST['username'];
$last=$_POST['password'];
$sql="SELECT count(user_id) as records FROM table WHERE username='$first' AND password='$last'";
$result = $db->query($sql);
$row = $result->fetch(PDO::FETCH_ASSOC);
if ($row['records'] == 1);
{
$_SESSION['loggedIN'] =true;
header("Location:logged.php");
die();
}
else {
$_SESSION['loggedIN'] = null;
header("Location:home.php");
die();
}
?>
таблица является зарезервированным словом, вы уверены, что ваше имя таблицы является таблицей? Используйте обратные ссылки, если таковая \ 'table \'. Также подготовленные Google заявления. – Mihai
Итак, вы пытаетесь использовать PDO, но вы по-прежнему размещаете данные '$ _POST' непосредственно в запросе? Nice ... – Ryan
Вы не можете просто предположить, что ваш запрос сработал, вам нужно проверить ошибки до 'fetch()' ing. 'if ($ result === FALSE) {var_dump ($ db-> errorInfo()); умереть; } '. Постскриптум PDO не волшебным образом делает ваши запросы без инъекций, вам нужно использовать [подготовленные заявления] (http://www.php.net/pdo.prepared-statements). P.P.S. 'mysqli_connect_errno' вам не поможет. Вы используете PDO, а не MySQLi. –