繁体   English   中英

PHP数组选择mysql

[英]PHP Array to select mysql

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

输出$ _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']。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM