0

この種の問題にはいくつかの解決策があり、この問題にいくつかの解決策を適用したことは知っていますが、解決できず、混乱しています。私を助けてください。コードは次のとおりです。

protected String doInBackground(Boolean... params) {

        String result = null;

        StringBuilder sb = new StringBuilder();


        try {

            // http post
            HttpClient httpclient = new DefaultHttpClient();



            HttpGet httppost = new HttpGet(
                    "http://192.168.2.245/getProducts.php?login=1&user_name=UserName&password=Password");  

            HttpResponse response = httpclient.execute(httppost);
            if (response.getStatusLine().getStatusCode() != 200) {
                Log.d("MyApp", "Server encountered an error");
            }



            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    response.getEntity().getContent(), "utf-8"), 8); //old charset iso-8859-1

            sb = new StringBuilder();

            sb.append(reader.readLine() + "\n");

            String line = null;

            while ((line = reader.readLine()) != null) {

                sb.append(line + "\n");


            }
            result = sb.toString();

            Log.d("test", result);

        } 
        catch (Exception e) {

        Log.e("log_tag", "Error converting result " + e.toString());

        }

        return result;
    }

PHP コード:

$login=$_GET["login"]; 
$user_name=$_GET["user_name"]; 
$password=$_GET["password"]; 
$output=array(); 
if ($login) { 
$sql=mysql_query("SELECT user_id FROM users WHERE user_name='".$user_name."' AND user_pass='".$password."' "); 

while($row=mysql_fetch_array($sql)) { 
 $user_id=$row["user_id"]; 
} 

$sql=mysql_query("SELECT name,device_id,lat,lon FROM devices WHERE user_id='".$user_id."' LIMIT 100"); 

while($row=mysql_fetch_assoc($sql)) { 
$output[]=$row; } 
} 

print(json_encode($output)); 
mysql_close();

logcat:org.json.JSONException: 値

私は何をすべきか?Php コードはエラーなしで Web ページ上で実行されますが、なぜこの部分でエラーが発生したのでしょうか? logcat にもあります: ( ! ) 注意: 未定義の変数: C:\wamp\www\getProducts.php の27行目の user_id

ログキャット!

<br /><font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0'    cellpadding='1'><tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Undefined variable: user_id in C:\wamp\www\getProducts.php on line <i>27</i></th></tr><tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>... this kind of code appears in logcat then org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONArray at org.json.JSON.typeMismatch(JSON.java:107)

Animation.setStartOffset を使用してオーディオ (MediaPlayer) を同期する

アニメーションの開始を遅らせるために setStartOffset を使用しています。遅延またはオフセットは、ImageView ごとに異なります。アニメーションには、終了を検出するためのリスナー レジスタがあります。onAnimationStart は実際にアニメーションが開始されたときにキックすると思っていましたが、すぐに通知されます (オフセットを考慮せずに)。mediaplayer に遅延を導入しようとしていましたが、そのようなものは見つかりませんでした。私はSoundPoolも見ましたが、解決策も見当たりませんでした。

私の問題の解決策はありますか?

4

1 に答える 1

4

有効な JSON を返しません。Web<br> サイトの戻りソースを見て、HTML スニペットを返しているようです。

私は何をすべきか?Php コードはエラーなしで Web ページ上で実行されますが、なぜこの部分でエラーが発生したのでしょうか? logcat にもあります: ( ! ) 注意: 未定義の変数: C:\wamp\www\getProducts.php の 27 行目の user_id

したがって、user_idは定義されていません。GET/POST パラメータを確認するか、関連する PHP コードを表示してください。

使用しecho json_encode($output);ないでくださいprint

最初のクエリから返される行がない場合、何をしていますか。これを試して。

$sql=mysql_query("SELECT user_id FROM users WHERE user_name='".$user_name."' AND user_pass='".$password."' "); 
if(mysql_num_rows($sql) == 0){
   echo "USERID CANNOT BE FOUND";
}
while($row=mysql_fetch_array($sql)) { 
  echo "USERID FOUND" .$row["user_id"] ;
  $user_id=$row["user_id"]; 
} 

user_name見つからなかったようです。そのため、しばらくしてから user_id をエコーすることで、そこでデバッグしてください。UserID FOUND echo を取得しない場合、user_name とパスワードは存在しません。

編集: logact が言うように、渡すユーザー名のエントリがないため、 $user_id が入力されることはありません。

http://192.168.2.245/getProducts.php?login=1&user_name=UserName&password=Password

user_name = UserName および password = Password を渡しています。このエントリはデータベースに本当に存在しますか?

また、パフォーマンスを向上させるには、MySQL LETF JOIN および MySQL サブクエリを参照してください。

于 2013-10-08T09:55:22.583 に答える