Php 多个表上带有LIKE的WHERE子句
我有以下疑问:Php 多个表上带有LIKE的WHERE子句,php,mysql,Php,Mysql,我有以下疑问: SELECT ci.cid, ci.set, ci.year, ci.name, ci.cardvar, ci.comp, ci.grade, ci.pop, ci.cardnum FROM uc INNER JOIN ci ON uc.cid = ci.cardId WHERE uc.uid = '$userId' and ci.name like '%$updateSearchCriteria%' 我想在其他行中包括'updateSear
SELECT ci.cid, ci.set, ci.year, ci.name, ci.cardvar, ci.comp, ci.grade, ci.pop, ci.cardnum
FROM uc
INNER JOIN ci ON uc.cid = ci.cardId
WHERE uc.uid = '$userId' and ci.name like '%$updateSearchCriteria%'
我想在其他行中包括'updateSearchCriteria'
。因此,现在,如果用户键入一个人的名字,它将只在name
行中查找这些名字并返回它
所以,如果updateSearchCriteria
was bill->所有的bill都将返回
我希望用户键入年份
,名称
,甚至cardvar
SELECT ci.cid, ci.set, ci.year, ci.name, ci.cardvar, ci.comp, ci.grade, ci.pop, ci.cardnum
FROM uc
INNER JOIN ci ON uc.cid = ci.cardId
WHERE uc.uid = '$userId' and ci.year like '%$updateSearchCriteria%' or
ci.name like '%$updateSearchCriteria%' or
ci.cardvar like '%$updateSearchCriteria%'
所以现在如果我输入2018年账单->什么都不返回。
或者2018年账单基数(基数为cardvar)将不会返回任何内容。也许我需要在另一个专栏中合并所有内容?不确定
如何将多行组合到where/like子句中?您应该添加大括号以强制特定的运算符优先级,并对每列使用单独的搜索条件:
在哪里
uc.uid=“$userId”
及
(
ci.year类似“%$yearBeingSearched%”
或
类似“%$nameBeingSearched%”的ci.name
或
类似“%$cardvarBeingSearched%”的ci.cardvar
)
您应该添加大括号以强制特定运算符优先,并对每列使用单独的搜索条件:
在哪里
uc.uid=“$userId”
及
(
ci.year类似“%$yearBeingSearched%”
或
类似“%$nameBeingSearched%”的ci.name
或
类似“%$cardvarBeingSearched%”的ci.cardvar
)
您可以使用空格分割条件,并对每个分割的字符串使用like语句。在这种情况下,您需要创建一个动态查询您可以使用空格分割您的条件,并对每个分割的字符串使用like语句。在这种情况下,您需要创建一个动态查询如果您有具有相同条件的不同列,则可以使用CONCAT()函数:
WHERE uc.uid = '$userId' AND concat(ci.year, ci.name, ci.cardvar) like '%$cardvarBeingSearched%'
您可以根据需要向CONCAT()函数添加更多列。如果有不同的列具有相同的条件,则可以使用CONCAT()函数:
WHERE uc.uid = '$userId' AND concat(ci.year, ci.name, ci.cardvar) like '%$cardvarBeingSearched%'
您可以根据需要向CONCAT()函数添加更多列。我担心需要单独的搜索条件。最后,如果需要,我可以大胆地更改客户端代码。非常感谢!我担心需要一个单独的搜索条件。最后,如果需要,我可以大胆地更改客户端代码。非常感谢!没有例子,这是毫无意义的。但是谢谢你,如果没有一个例子,这是毫无意义的。但是谢谢你。