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。 –