2011-09-09 11 views
0

私は以下のコードを書いています。これはセッション変数をデータベースと照合し、セッションにあるユーザID =ユーザIDを与えてください。なぜこの単純なmysql_query/SELECT/echoは出力として "配列"を取得しますか?

I echo $session_name;私はユーザーIDを取得します。 30 もし私がecho $row2;私は配列を得る

私は間違って何をしていますか?

<?php 
     connect(); 
     $session_name = $_SESSION[id]; 
     $sql2 = "SELECT username FROM members WHERE member_id = '$session_name'"; 
      $result2=mysql_query($sql2); 
      $row2 = mysql_fetch_array($result2); 
     echo $row2; 
     ?> 
+0

質問に[mysql]タグを追加してください。私はそれをやろうとしていましたが、どうにかしてretagリンクがありません。 – bfavaretto

+1

そして、あなたがそれを読んでいる間、[PHPでSQLインジェクションを止める最善の方法](http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php) –

答えて

0
<?php 
     connect(); 
     $session_name = $_SESSION[id]; 
     $sql2 = "SELECT username FROM members WHERE member_id = '$session_name' LIMIT 1"; 
      $result2=mysql_query($sql2); 
      while($row2 = mysql_fetch_assoc($result2)) 
       echo $row2['username']; 
?> 
+0

完璧に私が望んだもの。完全に動作します – John

1

$row2[0]をエコー試してみてください。 mysql_fetch_arrayは、1つの結果行をインデックス配列として返します。この場合、要素/列は1つのみです。 $row2 === FALSEであるかどうかをテストすることも忘れないでください。これは、クエリの結果がなかったことを示します。

2

あなたがDBから取得しているかを確認する

echo $row2[0]; 

あるいは

print_r($row2); 

を試してみてください。

+0

あなたのfetchmodeが連想またはオブジェクトであると仮定します。 –

0

フェッチの結果は、常に配列です。この場合、1次元配列です。 $row2[0]を使用してください(fetchmodeが配列であると仮定します)。

fetchmodeがassociativeまたはobjectの場合は、$row2['username']になります。ここでは、より良い情報のため

チェック:http://php.net/manual/en/function.mysql-fetch-array.php

0

$ ROW2は、実際に返される行全体を表す配列です。 $ row2 [0]を試してみてください。返された行の1つのフィールドに期待したものが与えられます。

0

$row2の配列です。これを取得するためにmysql_fetch_arrayを使用し、関数の名前が示すように、配列を返します。

mysql_fetch_arrayによって返される配列は、SQLクエリの列名をキーとして使用します。したがって

echo $row2['username']; 

は、期待するデータを返します。

脇役として:SELECTは技術的にはSQL の文節であり、PHPの機能ではありません。

関連する問題