0
我正尝试使用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();
}
?>
表是一个保留字,你确定你的表名是表?使用反引号如果是这样\'表\'。还有谷歌准备语句。 – Mihai
所以你试图使用PDO,但是你仍然在查询中直接放置'$ _POST'数据?尼斯... – Ryan
你不能假设你的查询工作,你需要在'fetch()'之前检查错误。 'if($ result === FALSE){var_dump($ db-> errorInfo());死; }'。附: PDO不会神奇地使您的查询无需注入,您需要使用[预先准备的语句](http://www.php.net/pdo.prepared-statements)。 P.P.S. 'mysqli_connect_errno'不会帮助你。你正在使用PDO而不是MySQLi。 –