我有一个完整的包列表,我希望用户选中复选框并比较包。在用户选择之后,我将使用从checkbox数组中获取的packages_id将所有包数据显示到.PDF文件。如何分离数组并注入mysql select?
$ _POST ['compare']的输出: [14,15,16]
Mysql查询:
$packages=mysql_query("
select *
from package
where id in (" . implode(',', $_POST['compare']) . ")
LIMIT 4");
答案 0 :(得分:2)
这应该对你有用
mysql_query("
select *
from package
where id in (" . implode(',', $_POST['compare']) . ")
");
采取适当的措施来消毒和验证您的输入
答案 1 :(得分:0)
如果我理解你的问题,你需要帮助查询。
if( empty( $_POST['compare'] ) )
// stop execution because they didn't pick anything
$packages = mysql_query(
" SELECT * FROM package WHERE id = '".
implode( "' OR id = '", $_POST['compare'] )
."'" );
看看http://us3.php.net/implode在您对PDO进行更改之前,这是编写查询的最佳选择。
你应该知道你根本没有消毒你的查询。即使您认为您正在控制复选框的值以及查询中的内容,也很容易伪造表单数据。因此,您需要实施安全检查。
一种简单的方法是:
foreach( $_POST['compare'] as $compare ){
$sql[] = sanitize( $compare );
}
显然你需要一个消毒功能。这些很容易在SO上找到。然后你可以在查询中使用$ sql而不是$ _POST ['compare']。