2012-01-06 35 views
0

嘿,我正在學習一種查詢我的數據庫的新方法,因爲它意味着更好更安全,我構建了可以重用的準備好的語句。無法在mysql腳本中正確綁定參數

問題是這是一個不同的方式來看待它,我還沒有習慣它,仍然有一些事情,我不明白。

所以我的腳本試圖綁定三個章到一個查詢,以允許用戶登錄到我的網站。我像以前一樣現在用的是同一個腳本,該使用的用戶名和密碼......這只是正常:

$query = "SELECT * 
      FROM user 
      WHERE email = ? AND password = ? 
      LIMIT 1"; 

    if($stmt = $this->conn->prepare($query)) 
    { 
     $stmt->bind_param('ss', $un, $pwd); 
     $stmt->execute(); 

     if($stmt->fetch()) 
     { 
      //$uid = $stmt->fetch(id); 
      //$_SESSION['uid'] = $uid; 
      $stmt->close(); 
      return true; 
     } 
    } 

但是當我檢查,如果用戶是管理員我不喜歡它:

$query = "SELECT * 
      FROM user 
      WHERE email = ? AND password = ? AND isAdmin = ? 
      LIMIT 1"; 

    if($stmt = $this->conn->prepare($query)) 
    { 
     $stmt->bind_param('ssi', $un, $pwd, $isAdmin); 
     $stmt->execute(); 

     if($stmt->fetch()) 
     { 
      //$uid = $stmt->fetch(id); 
      //$_SESSION['uid'] = $uid; 
      $stmt->close(); 
      return true; 
     } 
    } 

而且我宣佈isAdmin作爲一家全球私人變種在類的開始,像這樣:

private $isAdmin = "1"; 

所以,是的,我知道,我測試的用戶有isActive 1數據庫中,但是當它確實進入這個腳本它retu rns假。

就像我說的,我是新來的這種寫作風格的查詢,所以任何幫助將是驚人的。

謝謝你的時間。

+0

是否有任何警告或通知? – SergeS 2012-01-06 11:15:51

+0

Nope ....那麼當我使用'1'而不是var $ isAdmin時,如果這有幫助嗎? – ragebunny 2012-01-06 11:23:37

+0

也許,並且日誌形式SQL也可以幫到 – SergeS 2012-01-06 11:24:40

回答

0

好吧,所以我想我已經得到了它。我將isActive var添加到正在使用它的函數中,而不是全局變量,現在它可以正常工作。

感謝您的幫助。任何關於此事的其他提示都將非常值得歡迎!