1

私はAndroidアプリを開発していますが、アプリがSQLデータベースと通信するにはPHPAPIが必要です。

JSONの解析中にエラーが発生しましたgetJarrayFromString();

次に、実際のエラーをログに記録しようとしましたが、次のようになりました。

03-24 15:41:12.175: E/JustDealsUtils(480): Error parsing to json on getJarrayFromString(); org.json.JSONException: Value Database of type java.lang.String cannot be converted to JSONArray
03-24 15:41:12.175: E/log_tag(480): Failed data was:
03-24 15:41:12.175: E/log_tag(480): Database query failed You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'bCode` LIKE '%%' AND `bTitle` LIKE '%%' AND `bModule` LIKE '%%'' at line 1

上記のログは、エラーが次のような私のbooks.phpAPIにあることを非常によく示しています。

<?php
    include("MysqlConnection.php");
    header('Content-Type: application/json');
    $from = $_POST["from"];
    $nr = $_POST["nr"];
    // those variables are for search
    $title = $_POST["title"];
    $code = $_POST["code"];
    $price = $_POST["price"];
    $module = $_POST["module"];
    $order = $_POST["order"];
    $by = $_POST["by"];


    $sql = "SET CHARACTER SET utf8";
    $db->query($sql);

    if(isset($from) && isset($nr)){
        // we need to know how many rows are in total for this query
<PROBLEM IS HERE---> $sql = "SELECT * FROM `books` WHERE `bSpecialOffer`='false' AND `bCode` LIKE '%$code%' AND `bTitle` LIKE '%$title%' AND `bModule` LIKE '%$module%'";
        $query = $db->query($sql);

        $rows = array();
        $rows[] = array("numRows"=>$db->numRows($query));

        // if those 2 var are set then we order the query after them
        if(isset($order) && isset($by)){
            $sql .= " ORDER BY `$order` $by LIMIT $from, $nr";
        }else{
            $sql .= "LIMIT $from, $nr";
        }

        $query = $db->query($sql);

        if($db->numRows($query)!=0){
            while($row = mysql_fetch_assoc($query)) {
                $rows[] =  $row;
            }
            echo json_encode($rows);
        }
    }

    $db->closeConnection();
?>

Log Catで前述したように、PHPでの私のステートメントがどのように間違っているのか混乱しています。

次のように書く別の方法はありますか?

$sql = "SELECT * FROM `books` WHERE `bSpecialOffer`='false' AND `bCode` LIKE '%$code%' AND `bTitle` LIKE '%$title%' AND `bModule` LIKE '%$module%'";

あなたの提案をいただければ幸いです。

4

1 に答える 1

0

SQLクエリはこれまでのところ正しいですが、渡す値は空です。

の値

    $code = $_POST["code"];
    $price = $_POST["price"];
    $module = $_POST["module"];

空です。値が設定されていることを確認してください。

時々、二重引用符がその責任を負います。次に、それらを一重引用符で置き換えてみてください

    $code = $_POST['code'];
    $price = $_POST['price'];
    $module = $_POST['module'];
于 2013-03-24T15:54:44.320 に答える