2012-02-07 8 views
1

私は最近、アンドロイドのJavaコードにデータを返すように書いたPHPスクリプトを手に入れました。残念ながら、スクリプトはデータを返す私のテーブルの最初の行。MySQLでPHPがテーブルの最初の行だけ正しい結果を返す

私の表のようなフォーマットされている:

1 Jared Jones 
2 Karla Cross 
3 Jasmine Smith 
4 Vince Stevens 

番号がユーザIDに対応し、他の2つの属性がします。FNameとLNAMEあります。次のようにMySQLのスクリプトを実行するための

私のPHPスクリプトは次のとおりです。

<?php 
mysql_connect("my database credentials go here"); 
mysql_select_db("a2275354_gtchose"); 
$sql=mysql_query("select FName,LName from Test where UserId ='".$_REQUEST['userId']."' "); 
while($row=mysql_fetch_assoc($sql)) 
$output[]=$row; 
print(json_encode($output)); 
mysql_close(); 
?> 

私は、クエリにはuserIdとして1を渡したときに、私は結果を受け取るだけの時間がある理由私はわかりませんよ。何か案は?

ありがとうございました

+0

は、ユーザーIDフィールドの種類は何ですか?さらに、フィールドタイプが整数の場合はhttp://www.php.net/mysql_real_escape_stringを読んで、mysql_query( "UserId = '"。intval($ _ REQUEST [' userId '])のどこからTestからFName、LNameを選択します。 ")"; – Cheery

+0

@CheeryこれはVarChar型です。なぜなら、私が現在取り組んでいるのは、userIdが文字と数字を混ぜたより大きなアプリケーションのテストであるからです。 – moneyman232

+0

$ sql文をエコーし​​て私たちの出力 –

答えて

0

userIdの引用符を削除してみます。その数値フィールド

$sql=mysql_query("select FName,LName from Test where UserId =".$_REQUEST['userId']); 
+0

ごめんなさい。 javaファイルそれはint型ではなく文字列として渡されます – moneyman232

+2

それは問題ではありません。さらに、あなたは彼をSQLインジェクションに向けて押しています。 – Cheery

+0

zendフレームワークを使用すると、セキュリティ上の懸念がすべて解消されます。私の悪い。 –

0

これがうまくいくかどうかわかりませんが、これを試すことができます。あなたのフィールドFNAMEとLNAMEにブラケットを追加する

$sql=mysql_query("Select (Fname,LName) from Test where UserId='".$_REQUEST['userID']."' "); 
0

あなたはwhileループの前に、あなたの配列を宣言しませんでした...ので、置く:

$output = array(); 

whileを、それがあるべきよう:

$output = array(); 
$sql=mysql_query(...); 
while($row=mysql_fetch_assoc($sql)) 
    $output[]=$row; 

また、他の人が指摘しているように、これはSQLインジェクションにも威力を発揮しますので、mysql_real_escape_stringを使用してください。あなたのidが数値の場合

はまた、あなたが本当にそれを中心に、その単一引用符を削除する必要があります...それはとにかく結果を返すべき問題ではありませんが...

+0

私の出力を調べると、結果は空の配列 "[]"として返されます – moneyman232

+0

次に結果はありません。あなたの質問にWHEREの部分を入れずに試してみてください。 –

+0

同じことをやってみましたが、残念ながらスクリプト作成の間違いです。私のテストはphpmyadminの意図した結果に戻ります。しかし、PHPの何かが正しい結果を返すことに失敗しています。 – moneyman232

関連する問題