0

HTTPリクエストを介してWebデータベースからデータを取得しようとしました。しかし、うまくいきません。SQL 文字列に引用符が含まれている場合のみ、失敗します。それ以外の場合は、正常に動作します。

デバッグすると、戻り文字列は常に次のようになります。

Warning:  mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/content/28/8269928/html/test.php on line 12 null (id=830020201688)

Android 側のコード:

    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    nameValuePairs.add(new BasicNameValuePair("strSql", "select * from user where username='test'"));


    try {
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://test.com/test.php");
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        is = entity.getContent();
    }
    catch(Exception e) {
           System.out.println("Connectiong Error");
    }

    String js = "";
    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;

        while ((line = reader.readLine()) != null) {
            sb.append(line + "/n");
        }

        is.close();

        js = sb.toString();
        System.out.println("get = " + js);
    }
    catch(Exception e) {
           System.out.println("Error converting to String");
    }

Web サーバーの PHP コード:

$myconn=mysql_connect("68.178.139.15", "username", "password");  
mysql_select_db("dbname");
mysql_query("set names 'utf8'");

$strSql = $_REQUEST['strSql'];

$result = mysql_query($strSql, $myconn);
while($row = mysql_fetch_array($result)) {
    $output[]=$row;
}

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

1 に答える 1

0

解決した

Android 側: URLEncoder.encode("select * from test where name=\'test\'")

PHP 側: urldecode($_REQUEST['strSql']);

于 2013-03-04T18:01:33.747 に答える