在一行mysql中搜索子字符串?

时间:2014-01-05 23:26:45

标签: php mysql

我的列名code_color包含数字和字母的组合,例如009grey 所以问题是我要求用户只有grey的颜色,那么如何只搜索颜色字符串? 这是查询

 "SELECT * FROM shoes WHERE name = '$searchKeyword' AND code_color = '$color' AND sex = '$gender' ";

其中code_color的字符串类似于009grey008red等,用户的颜色为grey或任何其他颜色。我该怎么做 ?

修改

如果它以m的形式存储在数据库中,并且我们从用户获得的是$ _POST ['sex'],其中包含male我们如何搜索它? LIKE %%方法似乎不适用于此处!

4 个答案:

答案 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' ";
相关问题