是否可以使用通配符进行SQL查询或使用contains进行搜索。
目前,用户可以在我的数据库中搜索地址。使用LIKE命令,他们可以搜索123 Fake St.但是有没有办法使用123执行搜索,然后让它显示其中包含123的所有地址。示例:搜索123 - >结果:123 Fake St,123 Spooner Ave,123 Example Terrace。
有没有办法执行这样的搜索?我当前搜索功能的代码如下:在上一页中,用户输入了他们想要搜索的地址,该值存储在$ street中。
$sql = ("SELECT sitestreet FROM `PropertyInfo` WHERE `sitestreet` LIKE '$street' AND `user` LIKE '$user'");
$result = mysql_query($sql);
谢谢!
答案 0 :(得分:4)
sql通配符'%'在类似的
中使用它"SELECT sitestreet FROM PropertyInfo WHERE sitestreet LIKE '%$street%' AND user LIKE '$user'"
答案 1 :(得分:2)
尝试
$sql = ("
SELECT sitestreet
FROM PropertyInfo
WHERE sitestreet LIKE '%$street%'
AND user LIKE '$user'");
$result = mysql_query($sql)
答案 2 :(得分:1)
$sql = ("SELECT sitestreet FROM PropertyInfo WHERE sitestreet LIKE '$street%' AND user = '$user'");
$result = mysql_query($sql);
对于用户,我不会使用LIKE运算符,而是使用=
答案 3 :(得分:1)
像这样:
LIKE '%$street%';
通配符为_
(单个字符)和%
(多个字符)。
答案 4 :(得分:0)
使用上面的查询,这就是您所需要的......
SELECT sitestreet FROM PropertyInfo WHERE sitestreet LIKE '%street' AND user LIKE '%user'
%符号是用于多个字符的通配符。它会在街道之前返回任意字符的记录,对用户也是如此。
答案 5 :(得分:0)
你必须使用
SELECT sitestreet FROM PropertyInfo WHERE sitestreet LIKE '%$street'
或
SELECT sitestreet FROM PropertyInfo WHERE sitestreet LIKE '%$street%'
答案 6 :(得分:0)
在包含用户输入的情况下动态构建SQL查询文本是一种让自己容易受到SQL注入攻击的好方法。
对于类似这样的事情,您应该做的是创建一个参数化的存储过程,它将执行您想要的搜索类型,在上面的示例中,您可能会将其命名为
GetSiteStreetByUserAndPartialAddress
然后让您的代码使用用户名和用户提供的地址搜索值作为参数调用该sproc
这可确保您的网站不会成为XKCD comics关于名为 bobby')的人的屁股; DROP TABLE用户; - 或在您的情况下让用户搜索
行123 Pwned Way'); DROP TABLE PropertyInfo; --