首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在多列中搜索多个项目

在多列中搜索多个项目
EN

Stack Overflow用户
提问于 2011-01-28 07:12:03
回答 3查看 425关注 0票数 2

我在一个表单中有6个选择项。我想在MYSQL DB中搜索这6个。如果我只使用一个,我可以检索结果,比如:

代码语言:javascript
复制
$result = mysql_query("SELECT * FROM wsinmuebles WHERE Property_Type LIKE '%{$_POST['Property_Type']}%'");

但是当我尝试更多的时候,我没有得到任何结果!

代码语言:javascript
复制
$result = mysql_query("SELECT * FROM wsinmuebles WHERE 
Property_Type LIKE '%{$_POST['Property_Type']}%' AND 
Estado LIKE '%{$_POST['Estado']}%' AND 
Ciudad LIKE '%{$_POST['Ciudad']}%' AND 
Urbanizacion LIKE '%{$_POST['Urbanizacion']}%' AND 
Operacion LIKE '%{$_POST['Operacion']}%' AND 
Precio_bsf LIKE '%{$_POST['Precio_bsf']}%'");

这来自POST方法的表单。

我需要的是在MYSQL DB中查找Property_Type、Estado、Ciudad、Urbanizacion、Operacion和Precio_bsf变量,并且只接收与所有这些值匹配的结果。

EN

回答 3

Stack Overflow用户

发布于 2011-01-28 07:15:57

不要使用和使用或在条件之间,毕竟你应该知道连接字符串和执行查询是可能的SQL注入,即当我结束你的查询并执行给定的操作时,而不是你的搜索字符串,例如"‘And 1=1;delete wsinmueble“如果这是我的搜索查询,你将丢失所有数据。

代码语言:javascript
复制
  $result = mysql_query("select * from tbl1 where Name='".mysql_escape_string ($_POST["value"]."'" );
票数 1
EN

Stack Overflow用户

发布于 2011-01-28 07:16:33

首先,使用mysql_real_escape_string (Link)对POST值进行转义,以避免任何SQL注入攻击以及具有'字符的数据的问题。

其次,回显查询并对数据库运行它,并检查表数据以查看

查询确实应该返回一些值,或者当包含其余条件时可能没有匹配,因为您提到您希望得到与所有这些值匹配的结果

票数 1
EN

Stack Overflow用户

发布于 2011-01-28 07:17:27

如果一个字段,比如Urbanizacion为null,那么您的查询将不会返回它。

代码语言:javascript
复制
Urbanizacion LIKE '%%'   =>   FALSE when Urbanizacion is Null

您将需要处理Nulls。我还强烈建议您使用mysql_real_escape_string保护代码免受SQL注入。

代码语言:javascript
复制
$result = mysql_query("
    SELECT * FROM wsinmuebles WHERE 
    IFNULL(Property_Type,'') LIKE '" . mysql_real_escape_string($_POST['Property_Type']) ."' AND 
    IFNULL(Estado,'') LIKE '" . mysql_real_escape_string($_POST['Estado']). "' AND 
    IFNULL(Ciudad,'') LIKE '" . mysql_real_escape_string($_POST['Ciudad']) ."' AND 
    IFNULL(Urbanizacion,'') LIKE '" . mysql_real_escape_string($_POST['Urbanizacion']) ."' AND 
    IFNULL(Operacion,'') LIKE '" . mysql_real_escape_string($_POST['Operacion']) ."' AND 
    IFNULL(Precio_bsf,'') LIKE '" . mysql_real_escape_string($_POST['Precio_bsf']) ."'");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4823068

复制
相关文章

相似问题

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