用于选择 mysql 的 PHP 数组


PHP Array to select mysql

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

$_POST["比较"]的输出:[14,15,16]

Mysql 查询:

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

这应该适合您

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

适当注意消毒和验证您的输入

如果我

理解正确您的问题,您需要有关查询的帮助。

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']。