我在一个表单中有6个选择项。我想在MYSQL DB中搜索这6个。如果我只使用一个,我可以检索结果,比如:
$result = mysql_query("SELECT * FROM wsinmuebles WHERE Property_Type LIKE '%{$_POST['Property_Type']}%'");但是当我尝试更多的时候,我没有得到任何结果!
$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变量,并且只接收与所有这些值匹配的结果。
发布于 2011-01-28 07:15:57
不要使用和使用或在条件之间,毕竟你应该知道连接字符串和执行查询是可能的SQL注入,即当我结束你的查询并执行给定的操作时,而不是你的搜索字符串,例如"‘And 1=1;delete wsinmueble“如果这是我的搜索查询,你将丢失所有数据。
$result = mysql_query("select * from tbl1 where Name='".mysql_escape_string ($_POST["value"]."'" );发布于 2011-01-28 07:16:33
首先,使用mysql_real_escape_string (Link)对POST值进行转义,以避免任何SQL注入攻击以及具有'字符的数据的问题。
其次,回显查询并对数据库运行它,并检查表数据以查看
查询确实应该返回一些值,或者当包含其余条件时可能没有匹配,因为您提到您希望得到与所有这些值匹配的结果。
发布于 2011-01-28 07:17:27
如果一个字段,比如Urbanizacion为null,那么您的查询将不会返回它。
Urbanizacion LIKE '%%' => FALSE when Urbanizacion is Null您将需要处理Nulls。我还强烈建议您使用mysql_real_escape_string保护代码免受SQL注入。
$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']) ."'");https://stackoverflow.com/questions/4823068
复制相似问题