2011-12-25 13 views
0

私は、このPHPファイルにユーザー名文字列を送信するiOSアプリケーションを作成しています。そして、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 /フレームワークを使用していますか? –

+0

+1私はそれがdownvotedされていないと思う。 – Lion

答えて

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のようにprepare/bindを実装していて、一般的に理解されているように)

+0

よろしくお願いします(PHP初心者)、ありがとう! –

+0

Kashifが書いたものも参照してください。それが本当にmysqliならば、変数を別々に渡します。型指定子として '' s''を多分渡します。 – mario

関連する問題