私は現在、自分が作成したPHPサービスを介してデータベースと通信するアプリケーションを開発しています。
私が問題を抱えているサービスは、ユーザーからの検索文字列に基づいてテーブル内の1つまたは複数の行を検索する必要があるサービスです。
以下のPHPは、SQLクエリが使用するデータとなる「name」の変数を使用してGETリクエストを受信するように設計されています。コードに問題はありませんが、検索から返される行は常に0です。
// checks for the post data
if (isset($_GET["name"])) {
$name = '%' . $_GET['name'] . '%';
// get a list of products from the database
$result = mysql_query("SELECT * FROM products WHERE name LIKE $name");
if (!empty($result)) {
// check for empty result
if (mysql_num_rows($result) > 0) {
$result = mysql_fetch_array($result);
$products = array();
$products["id"] = $row["id"];
$products["name"] = $row["name"];
$products["type"] = $row["type"];
$products["price"] = $row["price"];
$products["photo"] = $row["photo"];
// success
$response["success"] = 1;
// products node
$response["products"] = array();
array_push($response["products"], $products);
// echoing JSON response
echo json_encode($response);
} else {
// no products found
$response["success"] = 0;
$response["message"] = "No products found";
// echo no products JSON
echo json_encode($response);
}
} else {
// no products found
$response["success"] = 0;
$response["message"] = "Search Complete... No products found";
// echo no products JSON
echo json_encode($response);
}
} else {
// required field is missing
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";
// echoing JSON response
echo json_encode($response);
}
表示しているテーブルに「crisps」という名前のエントリがあるため、「cr」というデータを含むgetリクエストを送信すると、結果にそのエントリが表示されると予想されますが、0行が返されます。
次に、さらに奇妙なのは、データベースに対して直接以下のSQLを実行すると、実際に正しいレコードがプルバックされることです。
SELECT * FROM products WHERE name LIKE "%cr%"
何か案は??