首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果输入了多个$_POST数据,则添加

问如果输入了多个$_POST数据,则添加
EN

Stack Overflow用户
提问于 2012-11-17 01:57:17
回答 2查看 559关注 0票数 0

我在一个表单中有多个POST数据字段,并希望查询mysql数据库,如果只输入一个POST数据字段,所有的事情都在工作,但如果有两个或更多的字段,我得到错误,因为我需要输入和我的问题之间。

代码语言:javascript
复制
$sql ="SELECT * FROM  `medlem` WHERE";

if(!empty($_POST[fnamn])){
    $a=mysql_real_escape_string($_POST['fnamn']);
    $sql .= " `Fornamn` LIKE '%$a%'";
}
if(!empty($_POST[enamn])){
    $a=mysql_real_escape_string($_POST['enamn']);
    $sql .= " `Efternamn` LIKE '%$a%'";
}
if(!empty($_POST[adress])){
    $a=mysql_real_escape_string($_POST['adress']);
    $sql .= " `adress` LIKE '%$a%'";
}
if(!empty($_POST[postnr])){
    $a=mysql_real_escape_string($_POST['postnr']);
    $sql .= " `postnr` LIKE '%$a%'";
}
if(!empty($_POST[stad])){
    $a=mysql_real_escape_string($_POST['stad']);
    $sql .= " `stad` LIKE '%$a%'";
}
if(!empty($_POST[pnr])){
    $a=mysql_real_escape_string($_POST['pnr']);
    $sql .= " `pnr` LIKE '%$a%'";
}
if(!empty($_POST[tfn])){
    $a=mysql_real_escape_string($_POST['tfn']);
    $sql .= " `tfn` LIKE '%$a%'";
}
if(!empty($_POST[mobil])){
    $a=mysql_real_escape_string($_POST['mobil']);
    $sql .= " `mobil` LIKE '%$a%'";
}
if(!empty($_POST[epost])){
    $a=mysql_real_escape_string($_POST['epost']);
    $sql .= " `epost` LIKE '%$a%'";
}

如果用户填写了两个post字段,我会得到"SELECT * FROM medlem WHERE FornamnLIKE 'foo' Efternamn LIKE 'bar',并且它们之间缺少一个and,这个问题有没有简单的解决方案?

阿拉什

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-17 02:06:52

你可以在循环中完成它

代码语言:javascript
复制
$params = array(
    'fnamn' => 'Fornamn',
    'enamn' => 'Efternamn',
    'adress' => 'adress',
    'postnr' => 'postnr',
    'stad' => 'stad',
    'pnr' => 'pnr',
    'tfn' => 'tfn',
    'mobil' => 'mobil',
    'epost' => 'epost'
);
$condition = array();
foreach ($params as $key => $field) {
    if (isset($_POST[$key]) && !empty($_POST[$key])) {
        $a = mysql_real_escape_string($_POST[$key]);
        $condition[] = "`{$field}` LIKE '%{$a}%'";
    }
}

$slq = 'select * from `medlem` where '.implode(' and ', $condition);
票数 2
EN

Stack Overflow用户

发布于 2012-11-17 02:00:40

停!

欢迎使用Stack Overflow! 。它们不再被维护,deprecation process已经开始对其进行维护。看到了吗?相反,学习,并使用PDO或MySQLi - this article将帮助您决定使用哪种方法。如果你选择PDO,here is a good tutorial。

之所以会出现这种情况,是因为您在没有使用OR或AND的情况下构建查询。(这是分离逻辑语句所必需的)。

最好的解决方案是将所有查询部分添加到一个数组中,并使用a分隔符" AND "进行内爆。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13421930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档