Php 来自$\u POST的SQL SELECT语句
我正试图根据通过html表单收集的信息构建一个SQLPhp 来自$\u POST的SQL SELECT语句,php,html,mysql,Php,Html,Mysql,我正试图根据通过html表单收集的信息构建一个SQLSELECT语句,该表单存储在$\u POST数组中。我的困难在于语句必须根据用户的输入而变化 我有两个下拉菜单,它们的值分别存储在$\u POST['flow']和$\u POST['tables']中。到目前为止还不错 然后我有4个国家复选框,15个年份复选框。第一个存储在数组$\u POST['country']中,第二个存储在$\u POST['year']中 我尝试通过foreach循环构建SQL语句,如下所示: <?php
SELECT
语句,该表单存储在$\u POST
数组中。我的困难在于语句必须根据用户的输入而变化
我有两个下拉菜单,它们的值分别存储在$\u POST['flow']
和$\u POST['tables']
中。到目前为止还不错
然后我有4个国家复选框,15个年份复选框。第一个存储在数组$\u POST['country']
中,第二个存储在$\u 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;
?>
忽略我上面的评论,这应该是可行的(尽管完全不安全):
UseWHERE IN()
此代码不会在生产中使用,对吗?这是一些网络开发101课程,对吗?紧张地笑着,满头大汗profusely@MonkeyZeus,这绝对是一个web开发人员101级的问题。但您必须从某个地方开始,在数据库被恶意用户删除后,恢复数据库将更加复杂。这段代码充满了漏洞,如果它移动得太快,就会发出汽笛声。使用事先准备好的陈述。这不难做到。您可以命名您使用的每个占位符,然后将其绑定到使用关联数组的占位符。如果您想了解如何更安全地执行此操作的示例,请查看ORM是如何类似的,或者允许您将代码表示为一系列可选附加到查询的子句。谢谢。正如我所说,我的编程知识非常基础。“我怎样才能让它更安全呢?”方济各文士问道
<?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;
?>