php - 选择包含字符串的行

标签 php mysql

我在表 activities 中有一个名为 software_hardware 的列,该列可能有多个产品输入,并由类似 INVENTORY| 的管道分隔开。 POS |GPOS |会计|

我有这个查询:

SELECT a.id, a.ticket_number, a.client, a.software_hardware, 
a.issues_concern, a.status, a.technical_programmer, a.date_added 
FROM activities a
WHERE a.client = '".$_POST['client']."' AND a.software_hardware LIKE '%".$arr[$i]."%'
ORDER BY date_added DESC

$arr =explode("|", $_POST['Soft_hard']);

当我选择客户和产品时,相关信息将显示在 div 上。现在我的问题是,如果我有 POSGPOS,我意识到我无法使用 LIKE '%[在此处输入产品名称]%'因为如果我选择 POS,这将返回包含 POSGPOS 的结果。

如果我选择了 POS,如何修复此查询以不显示 GPOS

PS。我知道 MySQL 的问题。我所在的公司就是这么用的,所以我目前别无选择。

最佳答案

您可以使用 REGEXP :

a.software_hardware REGEXP '[[:<:]]" . $arr[$i] . "[[:>:]]'

[[:<:]][[:>:]]标记代表单词边界。所以POS无法匹配GPOS因为开头不会有单词边界。

请注意,您需要 trim($arr[$i])如果它有前导或尾随空格。

关于php - 选择包含字符串的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49504748/

相关文章:

php - 获取 contenteditable div 的当前值并更新数据库

mysql 使用包含变量的 mysql 查询创建 View

php - Laravel 5.3 - 在请求其他 GET 值时保留 GET 值

php - 在 joomla 中更改 slider 模块(yoocarousel)中按钮的位置

php - 使用 $_POST 将选定的项目值发送到服务器

php - 在放入数据库之前在php中设置日期

php - 如何从 Web 浏览器隐藏 SQL 查询 (PHP)

php - 如何每天从另一台服务器自动加载数据

php - 从 SQL 数据库中搜索并显示结果

php - 如何在 Mac OS X 中升级 PHP?