【发布时间】:2013-04-28 09:54:04
【问题描述】:
我正在研究一个解决方案,我使用 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) . ')';
提前致谢
【问题讨论】:
-
你能告诉我$ids的数组值吗
-
首先我认为您在
WHERE id IN...之前缺少'。其次,为什么解决方案不起作用?您是否检查了正在生成的查询?因为像这样使用implode或join,应该可以工作... -
数组将是 [2, 50, 236...] 并且完整的查询行是 $result = mysql_query("SELECT * FROM products WHERE id IN (' . implode(',', $ids) . ')" 或死(mysql_error());