当我调用此SQL语句时接收NULL作为值(该记录存在于MySQL DB中)。如何在Yii2中使用LIKE功能?感谢。
fprintf(stderr, "u");
write(STDERR_FILENO, "m", 1);
fprintf(stderr, "d\n");
答案 0 :(得分:1)
在Yii2中,你也可以用这种方式使用activeQuery Notation
$query = new Query;
$query->select('userid')
->from('user')
->where(['like', 'user', $this->username );
$command = $query->createCommand();
$this->id_user = $command->queryScalar();
答案 1 :(得分:0)
我认为这里的问题是binding
。
尝试使用此代替。
$command->bindParam('_username',$this->username);
还不确定变量的可接受语法是什么,所以如果它仍然不起作用,请尝试删除_
并在绑定时使用username
...查询:username
。
答案 2 :(得分:0)
我不确定,但尝试获得单引号前的第一个%和最后一个单引号后的最后一个%。
$ command = $ connection-> createCommand(“SELECT user_id 来自用户 名称LIKE%':_ username'%“);
答案 3 :(得分:0)
需要对整个数据进行绑定,而不仅仅是其中的一部分。
$command = $connection->createCommand("SELECT user_id
FROM User
WHERE name LIKE :username");
$user = '%' . $this->username . '%';
$command->bindParam(':username',$user);
$this->id_user = $command->queryScalar();
$command->execute();
答案 4 :(得分:0)
只需将"%value%"
包裹在bindValue
$command = $connection->createCommand("SELECT user_id
FROM User
WHERE name LIKE ':_username'");
$command->bindParam(':_username',"%".$this->username."%");
$this->id_user = $command->queryScalar();
$command->execute();
使用%%绑定值的正确方法低于
$command->bindParam(':_username',"%".$this->username."%");
就像我们使用的PDO一样
答案 5 :(得分:0)
我正在使用bindValue。你可以像这样使用.. 我的模型中有一个查询,并调用我的控制器上的函数。
内部模型:
$query = "SELECT u.id as idUser
FROM vagas_x_candidato vxc
INNER JOIN usuario u ON(u.id = vxc.id_candidato)
WHERE u.nome LIKE :nameUser";
$connection = \Yii::$app->db;
$model = $connection->createCommand($query);
$model->bindValue(":nameUser", '%' . $filter->nameU . '%');
return $model->queryAll();
内部控制器:
$vxc = new VagasXCandidatoSearch();
$vxc = $vxc->candidatosPesquisaAvancada(); //calls my method on model.