[英]SQL SELECT statement from $_POST
我正在尝试通过存储在$_POST
数组中的html表单收集的信息来构建SQL SELECT
语句。 我的困难之所以出现,是因为该声明必须根据用户的输入而有所不同。
我有2个下拉菜单,其值分别存储在$_POST['flow']
和$_POST['tables']
。 到现在为止还挺好。
然后,我有4个用于国家/地区的复选框,以及15个/年的复选框。 第一个存储在数组$_POST['country']
,第二个存储在$_POST['year']
。
我试图通过如下的foreach循环构建SQL语句:
<?php
//Define SQL SELECT statement
$sql = "SELECT * FROM ".$_POST['tables']." WHERE FlowType = '".$_POST['flow']."' AND (";
foreach ($_POST['country'] as $value) {
$sql .= "Reporter = '$value' OR ";
}
$sql = substr($sql, 0, -3);
$sql .= ") AND (";
foreach ($_POST['year'] as $value) {
$sql .= "TradeYear = '$value' OR ";
}
$sql = substr($sql, 0, -4);
$sql .= ")";
echo $sql;
?>
它有效,但是我感觉可以以不同的方式实现。 而且,使用这种方法将准备好的语句应用于PDO查询将很复杂。
有什么建议么? 我希望对此有所投入,因为我对PHP(以及一般编程)的知识非常基础。 谢谢!
从上面忽略我的评论,这应该有效(尽管完全不安全):
<?php
//Define SQL SELECT statement
$sql = "SELECT * FROM ".$_POST['tables']." WHERE FlowType = '".$_POST['flow'];
if(isset($_POST['country']) && is_array($_POST['country']) && count($_POST['country']) > 0)
{
$sql.= " AND Reporter in ('".implode("','", $_POST['country'])."')";
}
if(isset($_POST['year']) && is_array($_POST['year']) && count($_POST['year']) > 0)
{
$sql.= " AND TradeYear in ('".implode("','", $_POST['year'])."')";
}
echo $sql;
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.