我的列名code_color
包含数字和字母的组合,例如009grey
所以问题是我要求用户只有grey
的颜色,那么如何只搜索颜色字符串?
这是查询
"SELECT * FROM shoes WHERE name = '$searchKeyword' AND code_color = '$color' AND sex = '$gender' ";
其中code_color
的字符串类似于009grey
,008red
等,用户的颜色为grey
或任何其他颜色。我该怎么做 ?
如果它以m
的形式存储在数据库中,并且我们从用户获得的是$ _POST ['sex'],其中包含male
我们如何搜索它? LIKE %%方法似乎不适用于此处!
答案 0 :(得分:2)
"SELECT *
FROM shoes WHERE name = '$searchKeyword'
AND code_color LIKE '%$color%'
AND sex = '$gender' ";
您的代码可以打印,但是您应该考虑使用参数化查询。 (使用MySQLi或PDO)
答案 1 :(得分:2)
您可以执行类似
的操作SELECT * FROM shoes WHERE code_colour LIKE '%$color'
请记住,如果将变量直接粘贴到SQL查询中,则易受SQL注入攻击 - http://bobby-tables.com/php.html
答案 2 :(得分:0)
在尝试搜索之前,您似乎想跳过code_color
的前三位数
SELECT *
FROM shoes
WHERE name = :kw AND SUBSTRING(code_color, 4) = :color AND sex = :gender
:<name>
表示法用于将参数占位符表示为预处理语句中使用的参数占位符。
答案 3 :(得分:0)
使用正则表达式删除字符串中的所有数字
$color = preg_replace('/[^\\/\-a-z\s]/i', '', $color);
"SELECT *
FROM shoes WHERE name = '$searchKeyword'
AND code_color ='$color'
AND sex = '$gender' ";