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