1

PHP Web サービスを使用して MYSQL データベースからデータを取得するソリューションに取り組んでいます。クエリに単一のデータを渡しているので、現時点では問題ありません。

検索クエリで複数の ID を使用することを検討しているため、たとえば、複数の ID に基づいて製品のリストを取得したいと考えています。私は現在のPHPサービスを以下に置き、これを効果的に変更して必要なことを実行しようとしましたが、そこにたどり着くことができません.

<?php

// array for JSON response
$response = array();

// include db connect class
require_once __DIR__ . '/dbConnect.php';

// connecting to db
$db = new DB_CONNECT();

// check for post data
if (isset($_GET["id"])) {
    $id = $_GET['id'];

// get all products from products table
$result = mysql_query("SELECT * FROM products WHERE id = '$id'") or die(mysql_error());

// check for empty result
if (mysql_num_rows($result) > 0) {
    // looping through all results
    // venues node
    $response["products"] = array();

    while ($row = mysql_fetch_array($result)) {
        // temp user array
        $product= array();
        $product["id"] = $row["id"];
        $product["name"] = $row["name"];
        $product["type"] = $row["type"];

        // push single product into final response array
        array_push($response["products"], $product);
    }
    // success
    $response["success"] = 1;

    // echoing JSON response
    echo json_encode($response);
} else {
    // no products found
    $response["success"] = 0;
    $response["message"] = "No products found";

    // echo no users JSON
    echo json_encode($response);
}

}
?>

このコードは、単一の ID を PHP に渡す場所で機能し、単一の製品が返されますが、複数の ID を配列で PHP に渡して、これらの ID をクエリで使用できるようにしたいと考えています。以下の解決策を試してみましたが、うまくいかなかったようです。また、この PHP は特に SQL インジェクションから保護するのに最適ではないことも理解しているので、これに関する他の提案は大歓迎です。

WHERE id IN (' . implode(',', $ids) . ')'; 

前もって感謝します

4

1 に答える 1

2

これを試してください これは注射を保護するためのものです

$ids = array_map('mysql_real_escape_string',$ids);

その後

 $sr=implode(",",$ids);

if($sr=='')
{
    $sr="''";
}

$result = mysql_query("SELECT * FROM products WHERE id IN (".$sr.")" or die(mysql_error());
于 2013-04-28T10:16:26.510 に答える