Php 如何区分大小写where()';在';将yii2与mysql数据库匹配
我在mysql数据库中有一个hashtags表,其中有一个Php 如何区分大小写where()';在';将yii2与mysql数据库匹配,php,mysql,yii,yii2,Php,Mysql,Yii,Yii2,我在mysql数据库中有一个hashtags表,其中有一个string(512)列,名为tag。我想使用Yii2的ActiveQuery进行区分大小写的搜索,如下所示: $expTags = ['one','two','three']; Hashtag::find()->where(["IN","tag",$expTags])->select(["id"]); 在mysql中,这通常意味着在每个值之外加上二进制前缀,或者在列名前面加上前缀。我两个都试过了,我甚至试过“二进制”,都没
string(512)
列,名为tag
。我想使用Yii2的ActiveQuery进行区分大小写的搜索,如下所示:
$expTags = ['one','two','three'];
Hashtag::find()->where(["IN","tag",$expTags])->select(["id"]);
在mysql中,这通常意味着在每个值之外加上二进制前缀,或者在列名前面加上前缀。我两个都试过了,我甚至试过“二进制”,都没用
如何做到这一点?我需要区分大小写的搜索,我不想仅仅为了这样做而修改表/列排序规则 您可以尝试以下方法:
$expTags = ['one','two','three'];
Hashtag::find()->where(["BINARY IN","tag",$expTags])->select(["id"]);
或
前面的答案非常接近:
中的二进制文件(用作运算符)导致语法错误(至少对于mysql)
这就击中了目标
但是,这将起作用:
Hashtag::find()->where(['BINARY(`tag`)' => $expTags])->select(["id"]);
我试过这种方法。我显然是在另一个更复杂的查询中使用上述查询。当我运行查询时,我得到位置SQL参数错误,如“参数3应为整数,但您正在发送字符串”。请注意,我实际上在查询中只发送了两个参数。
$expTags = ['one','two','three'];
Hashtag::find()->where(["BINARY IN","tag",$expTags])->select(["id"]);
Hashtag::find()->where('BINARY tag in(:tag)', ['tag'=> $expTags])->select(["id"]);
Hashtag::find()->where(['BINARY(`tag`)' => $expTags])->select(["id"]);