При попытки войти выдает ошибку Call to a member function fetch_assoc() on a non-object

Call to a member function fetch_assoc() on a non-object in C:\OpenServer\domains\kinomoon\vxod.php on line 12 , пытаюсь войти и в любом случае , независимо от правильности данных

function passwd($password)
{
    return md5($password);
}

$login = filter_var(trim($_POST['login']),FILTER_SANITIZE_STRING);
$pass = filter_var(trim($_POST['pass']),FILTER_SANITIZE_STRING);
$mysql = new mysqli('remotemysql.com','3u5SxxxWnv','4VxvDT64ar','3u5SxxxWnv');
//$result=$mysql->query("SELECT * FROM form") ;
$result=$mysql->query("SELECT * FROM form WHERE login = {$login} AND password = " . passwd($pass)) ;
$user=$result->fetch_assoc();
if (count ($user)==0) {
    echo "Такой пользователь не найден";
    exit;
}
setcookie("user", $user['name'], time()+3600,"/");
$mysql->close();
?>

Ответы (2 шт):

Автор решения: BigTows

Я так понимаю $mysql->query(...) возвращает FALSE, так как ваш запрос содержит ошибку с синтаксисе, не хватает кавычек для полей типа "строк".

По идее ваш запрос должен быть таким:

SELECT * FROM form WHERE login = '{$login}' AND password = '" . passwd($pass)."'"

А у вас соединение успешное?

Также рекомендую перейти на использование PDO и подготовленные запросы.

→ Ссылка
Автор решения: Slava Rozhnev

Просто используйте $result->num_rows для получения количества возвращаемых строк перед $result->fetch_assoc()

$result=$mysql->query("SELECT * FROM form WHERE login = {$login} AND password = " . passwd($pass)) ;

if ($result->num_rows == 0) {
    echo "Такой пользователь не найден";
    exit;
}

$user=$result->fetch_assoc();
setcookie("user", $user['name'], time()+3600,"/");
$mysql->close();
→ Ссылка