2011-12-25 52 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

相关问题