2011-12-25 71 views
0

我正在製作一個iOS應用程序,它將一個用戶名字符串發送到這個PHP文件,然後PHP文件檢查他們的用戶名是否存在於一個名爲「members」的數據庫中。我在網上獲得了這些代碼,並對其進行了一些修改以適應我的需求。這是代碼:PHP檢查數據庫中是否存在

// Main method to redeem a code 
function redeem() { 

    // Check for required parameters 
    if (isset($_POST["username"])) { 

     // Put parameters into local variables 
     $code = $_POST["username"]; 

     echo $code; 

     // Look up code in database 
     $user_id = 0; 

     echo "userid"; 

     $stmt = $this->db->prepare('SELECT username FROM members WHERE username=', $code); 

     echo "dbprepare"; 

     $stmt->bind_param("is", $code); 

     echo "bindparam"; 

     $stmt->execute(); 

     echo "execute"; 

     $stmt->bind_result($id, $code); 

     echo "bindresult"; 

     while ($stmt->fetch()) { 
      break; 
     } 
     $stmt->close(); 

的代碼絆倒在bind_param,就只到達echo "dbprepare"。我做錯了什麼嗎?我如何檢查用戶名?

+0

我們都不知道bind_param或bind_result是什麼意思。你使用什麼API /框架? – 2011-12-25 01:50:44

+0

+1我認爲它不會被低估。 – Lion 2011-12-25 01:57:19

回答

1

您忘記在SQL中添加?了。

$stmt = $this->db->prepare('SELECT username FROM members WHERE username=?', $code); 

echo "dbprepare"; 

$stmt->bind_param("is", $code); 
3

試試這個代碼

$stmt = $this->db->prepare('SELECT username FROM members WHERE username=?'); 

    echo "dbprepare"; 

    $stmt->bind_param("s", $code); 
3

我猜你在這裏做錯過的實際佔位符:

$stmt = $this->db->prepare('SELECT username FROM members WHERE username=?', $code); 

看到添加的?。準備調用不只是附加值。 你確實需要告訴它它屬於哪裏。 (如果你的班級按照mysqli或PDO實現準備/綁定,並且如通常所理解的那樣)。

+0

非常感謝您的幫助(PHP新手)! – 2011-12-25 01:54:06

+0

另請參閱Kashif寫的內容。如果它真的是mysqli,那麼你分別傳遞這個變量,也許只是''s''作爲類型說明符。 – mario 2011-12-25 01:55:33

相關問題