在sql中选择查询而不检索数据库中的值

时间:2015-08-10 07:10:32

标签: php mysql sql select

如果我employee_id只有integer(如1001),我就会得到答案

示例代码如下,

   $claimprocess = Employee::find()
                    ->where("employee_id = '1004'  and importcompany_id = 1")
                    ->andwhere(" status != 'Deleted' and relationship = 'Self'")
                    ->all();

如果我有employee_id组合intergercharacter,我就无法得到答案(例如E1004),

示例代码如下,

$claimprocess = Employee::find()
                    ->where("employee_id = 'E1004'  and importcompany_id = 1")
                    ->andwhere(" status != 'Deleted' and relationship = 'Self'")
                    ->all();

当我执行此代码时,会出现如下错误

  

异常(数据库异常)' yii \ db \ Exception'同   消息' SQLSTATE [42S22]:未找到列:1054 Champ   ' E1004' inconnu dans where子句正在执行的SQL   是:SELECT * FROM employee WHERE(employee_id = E1004和   importcompany_id = 1)AND(状态!='已删除')'

更新:

实际上是从另一个变量获得该值(E1004),我使用变量而不是值,为了解目的,我在我的问题中使用了一个值

3 个答案:

答案 0 :(得分:3)

您需要将employee_id值(即E1004)括在引号内,因为它包含字符串文字。所以你的查询看起来像

->where("employee_id = 'E1004'  and importcompany_id = 1")

答案 1 :(得分:1)

SQL中的字符串文字用单引号(')表示。如果没有它们,数据库会将E1004解释为列名,并且查询失败,因为您的表没有这样的查询。

$claimprocess = Employee::find()
                ->where("employee_id = 'E1004'  and importcompany_id = 1")
                ->andwhere(" status != 'Deleted' and relationship = 'Self'")
                ->all();

答案 2 :(得分:0)

您需要正确传递值,就像现在您没有正确传递值一样,因此Yii没有正确生成Sql查询。您可以将第二个参数传递给where子句

    $claimprocess = Employee::find()
                        ->where("employee_id = ':employee_id'  and importcompany_id = 1" , array(':employee_id'=>'E1004'))
                        ->andwhere(" status != 'Deleted' and relationship = 'Self'")
                        ->all();