Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 多个表上带有LIKE的WHERE子句_Php_Mysql - Fatal编程技术网

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()函数添加更多列。

我担心需要单独的搜索条件。最后,如果需要,我可以大胆地更改客户端代码。非常感谢!我担心需要一个单独的搜索条件。最后,如果需要,我可以大胆地更改客户端代码。非常感谢!没有例子,这是毫无意义的。但是谢谢你,如果没有一个例子,这是毫无意义的。但是谢谢你。