首先讓我說,我主要是一個iOS開發人員,他最近纔開始探索全棧開發的驚險冒險。我是PHP和MySQL的新手。說了我有一個問題,我希望需要一個直接的解決方案。
我爲一個客戶端創建了新的API,這個客戶端有一個預先存在的數據庫,他們想使用電子郵件地址和密碼來驗證用戶。
我的代碼:
客戶: 我開始了從形式到PHP腳本張貼電子郵件地址和密碼。我已經驗證該帖子是否按預期發生,即我正在接收用戶輸入的電子郵件地址和密碼。 (對於我的問題,只有電子郵件是相關的。)我不想進入「加密你的密碼」的討論。這不是我的問題。
服務器:(爲它的價值,這使用CodeIgniter的框架)
public function authenticateUser()
{
$user = $_POST['user'];
$password = $_POST['password'];
$this->load->model('user_model');
// for testing purposes, I'm just trying to echo the email address.
echo $this->user_model->authenticateUser('user', $user, $password);
}
從user_model的authenticateUser功能:
public function authenticateUser($table, $email, $password)
{
$sql = "SELECT email FROM " . $table . " WHERE email = " . "$email";
$query = $this->db->query($sql);
$row = $query->row(); // this is the line referenced in the error.
return $row->email;
}
爲清楚起見,我打電話參數$用戶,直到它傳遞給authenticateUser,然後我把它叫做$ email。顯然這是無關緊要的。
下面是真實正在生成錯誤:
Fatal error: Call to a member function row() on a non-object in /path/to/core/MY_Model.php on line 76
76 || $row = $query->row();
該電子郵件被存儲在用戶表中的數據庫的電子郵件列作爲一個varchar(100)。
如果我使用其他標準(如userId)進行查詢,我可以訪問電子郵件地址,但我無法將該電子郵件地址用作我的查詢的搜索條件。 (對不起,如果我沒有使用適當的命名法)。
有什麼額外的我必須做一個電子郵件地址使用它作爲驗證用戶的方式嗎?我是否全部錯了?任何幫助將不勝感激。
在此先感謝您花時間考慮我的問題。
更新
我解決不了自己的問題,直到8個小時後問,但我想現在更新我的問題讓社會知道,它的解決。這解決了我的問題:
$sql = "SELECT email FROM " . $table . " WHERE email = '".$email."'";
非常感謝大家的快速,親切的回覆!:)
這裏的條件應該是WHERE email ='「。$ email。」'「; –
@Rikesh。不需要,我們可以直接使用row,請檢查http://ellislab.com/codeigniter/user-guide/database/ results.html –