PHP MySQL服务从多个id获取数据

时间:2013-04-28 09:54:04

标签: php mysql

我正在开发一个解决方案,我正在使用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) . ')'; 

提前致谢

1 个答案:

答案 0 :(得分: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());