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 回答