2012-02-14 7 views
0

私はPHP/mySQL初心者ですし、それを取得しようとしています。私はユーザー名/パスワードの一致を取得するかどうかを検出するコードを持っていますが、今私はレコードを更新できるようにuseridフィールドを取得しようとしています。私がこれまでに持っていたものを示しています:どうすればmysqlテーブルのフィールドを取得できますか?

$sql = "SELECT username FROM users WHERE username='$username' AND password='$password'"; 
    $result = $link->query($sql) or die(mysqli_error()); 

print_r($ result)を使用すると、項目がありますが、ここからは消えてしまいます。

+0

質問で "userid"と言うが、あなたの例では "username"と言うのだろうか?また、$ usernameと$ passwordをエスケープしていることを確認してください。 –

+0

私の主キーであるユーザーIDを取得しようとしています。目的は、そのレコードのフィールドsessionidを更新することです。あなたが正しい方法で私を修正しようと自由に感じていると思わないならば。 – jfisk

+1

'$ result-> fetch_assoc()'を使って '$ result'から行を取得する必要があります –

答えて

3

これを試してください。

$sql = "SELECT username FROM users WHERE username='$username' AND password='$password'"; 
$result = $link->query($sql) or die(mysqli_error()); 

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { 

     $userID= $row['username'] ; 
     // If you need other field as userID just change the sql and the index of $row according to that. 

} 

EDIT

あなただけの1行を取得したい場合。

if($result->num_rows==1) 
{ 
    $row = $result->fetch_array(MYSQLI_ASSOC); 
    $userID = $row["username"]; 
} 
+0

これでタイプミスたとえば、$ resultを使用するときは$ resを使用します。 –

+0

それに気づいてくれてありがとう@AlexLunix。 –

+0

素晴らしい答えは、アップルの場合、theresだけ私は(この場合のように)必要なオブジェクトは、私はwhileループを使用する必要がありますか? – jfisk

1

おそらくこれが役立ちます。 でSQLクエリを実行している任意のプログラミング言語は、これらのステップで構成する予定です。

  1. は、実行したいSQL文のテキストを作成します。
  2. (オプション)パラメータ(または「プレースホルダ」)の使用が含まれる場合は、それぞれに代入するパラメータ値の配列を準備します。
  3. ( "Prepare"と...)以前に開いた "データベース接続"でクエリを実行します。 (あなたの例では、 "$ link"はその接続に対応していなければなりません。)ハンドル(これは "$ result"と呼ばれます)は、そのクエリによって返された0以上の行に対応します。
  4. ここで、ハンドルを使用して、これらの各行を1つずつ取り出します。
  5. (オプション)ハンドルをきちんと整頓して「閉じる」ようにして、それらの行を提供するために使用していたすべてのリソースを破棄できることをデータベースシステムに示します。

、あなたが今、PHPのドキュメントを通じて、再び閲覧している場合、あなたはそれがわかります「これらは、簡単な言葉で、既知の宇宙内のすべてのプログラムは、通過しようとしていることを基本的なステップです」これらの各ステップに対応する機能です。読んでいる章を参照して、今説明したシナリオに合わせることができるかどうかを確認してください。 HTH ...

関連する問題