如何在Yii2中调用SQL LIKE函数?

时间:2016-05-10 23:32:51

标签: php yii2

当我调用此SQL语句时接收NULL作为值(该记录存在于MySQL DB中)。如何在Yii2中使用LIKE功能?感谢。

fprintf(stderr, "u");
write(STDERR_FILENO, "m", 1);
fprintf(stderr, "d\n");

6 个答案:

答案 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.