Laravel以正确的方式绑定原始sql字符串中的数据

时间:2017-05-30 03:53:53

标签: laravel-5

我正在为?使用DB::insert()标识符并且工作得很好,但我的DB::select()存在问题,?无法正常工作。

这是我的疑问:

    $result = DB::select("
        SELECT `department_code`, `name` FROM `tbl_departments` 
        WHERE `department_code` LIKE '%?%' OR `name` LIKE '%?%'
    ", [
        $searchkey, $searchkey
    ]);

3 个答案:

答案 0 :(得分:0)

您可以尝试这样:

$query = "SELECT * FROM table WHERE condition1 =: 'column'";
$result = DB::select(DB::raw($query),['column'=>'value]);

在我的情况下,它正在工作。

答案 1 :(得分:0)

如果你想使用laravel查询,那么你可以像这样使用它很容易理解每​​个人

DB::table('your_table_name')->where('field_name',$variable)
                            ->select('fieldname','fieldname')
                            ->first();

或者您可以使用get()来检索所有数据。如需进一步的帮助,您可以查看[此处] [1]

[1]:https://laravel.com/docs/5.0/queries或者如果你想要选择查询,那么

$ousers = DB::SELECT("SELECT
                                user.id as ouser_id,
                                user.name as ouser_name,
                                user.username as ouser_username,
                                user.phone_no as ouser_phone_number,
                                user.email as ouser_email,
                                user.pic as ouser_pic
                                FROM user
                                WHERE user.id != :userid1 AND user.flag = 1
                                AND user.id NOT IN
                                            (SELECT blocked_id FROM blockeds WHERE blocker_id = :userid2
                                                UNION
                                            (SELECT blocker_id FROM blockeds WHERE blocked_id = :userid3)
                                                UNION
                                            (SELECT sender_id FROM friends WHERE receiver_id = :userid4)
                                                UNION
                                            (SELECT receiver_id FROM friends WHERE sender_id = :userid5)
                                            )
                                HAVING ( (ouser_username LIKE '".$data['search']."%') OR (ouser_name LIKE '".$data['search']."%'))
                        ",array('userid1'=>$user->id,'userid2'=>$user->id,'userid3'=>$user->id,'userid4'=>$user->id,'userid5'=>$user->id));

答案 2 :(得分:-1)

显然这是有效的

$result = DB::select("
    SELECT `department_code`, `name` FROM `tbl_departments` 
    WHERE `department_code` LIKE '%$searchkey%' OR `name` LIKE '%$searchkey%'
");