0

mysqlからデータを取得する際に問題があります。私のプログラムには2種類のselectステートメントがあります。

1つは「Select*FromabcTable;」です。 もう1つは、「Select * From abcTable WHERE attribute='abc';」です。

プログラムは最初のプログラムではうまく機能しますが、2番目のプログラムではエラーが発生します。

mysqlを呼び出す前に、クエリ構造を出力すると、phpMyAdminで機能します。phpスクリプトに移動した後、クエリのエコーアウトはまったく異なります。これがコードです

この形式でクエリを作成し、query_stringに渡します

String query = "SELECT * FROM abcTable WHERE attribute = \'" + attributeVariable + \';"

mysql関数を呼び出します(ここではquery_stringに問題はありません。つまり、"Select * From abcTable WHERE attribute ='abc';"

//Call PHP Server to execute query
public static String executeQuery(String query_string) {
    String result = "";

    try {
        HttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost("http://10.0.2.2/getdata2.php");
        ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("query_string", query_string));
        System.out.println("GO TO?????" + query_string);
        System.out.println("GO TO PARAM???" + params);
        httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));

        HttpResponse httpResponse = httpClient.execute(httpPost);
        //view_account.setText(httpResponse.getStatusLine().toString());
        HttpEntity httpEntity = httpResponse.getEntity();
        InputStream inputStream = httpEntity.getContent();

        BufferedReader bufReader = new BufferedReader(new   InputStreamReader(inputStream, "utf-8"), 8);
        StringBuilder builder = new StringBuilder();
        String line = null;
        while((line = bufReader.readLine()) != null) {
            builder.append(line + "\n");
        }
        inputStream.close();
        result = builder.toString();
    } catch(Exception e) {
         Log.e("log_tag", e.toString());
    }

    return result;
}

phpスクリプト($queryは"Select * From abcTable WHERE attribute = \'abc \';"になります)

<?php
/* Change database details according to your database */
$dbConnection = mysqli_connect('localhost', 'name', 'pw', 'dbname');
$query  = $_POST['query_string'];
$result = mysqli_query($dbConnection, $query);
if (mysqli_num_rows($result) > 0) {
    while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
        $output[] = $row;
    }
print(json_encode($output));

} else {
   print($query);
}
?>

そしてエラーショー

01-20 05:01:48.687: I/System.out(359): <b>Warning</b>:  mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in <b>C:\AppServ\www\getdata2.php</b> on line <b>6</b><br />

助けてくれてありがとう!!!!

4

0 に答える 0