0

我有一个完整的包列表,我希望用户使用复选框进行选择并比较包。用户选择后,我将使用从复选框数组中获取的 packages_id 将所有包数据显示为 .PDF 文件。如何分离数组并注入 mysql 选择?

$_POST['compare'] 的输出: [14,15,16]

mysql查询:

$packages=mysql_query(" 
select * 
from package 
where id in (" . implode(',', $_POST['compare']) . ") 
LIMIT 4");
4

2 回答 2

2

这应该适合你

mysql_query("
    select *
    from package
    where id in (" . implode(',', $_POST['compare']) . ")
");

适当注意清理和验证您的输入

于 2012-06-20T03:36:16.220 回答
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'] 。

于 2012-06-20T03:33:08.203 回答