[11] laravel - 쿼리빌더 mysql내장함수 사용

2024. 6. 25. 10:49laravel(라라벨)

728x90

[ 환경 ]
ㄴ laravel 10.48.9


1.  기존 코드

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;

class login extends Controller
{
    public function login(){
        $id = $_POST['id'];
        $pw = $_POST['password'];

        $pw1 = \DB::table('member')->where('pw', '=', 'PASSWORD($pw)')->first();
        $check_pw = $pw1->pw; // 비밀번호 조회
       
        echo $check_pw; // 비밀번호 출력
        die();
    }
}

ㄴ 해당 오류 출력

- where('pw', '=', 'PASSWORD($pw)') 에서 데이터 부분을 아예 텍스트로 인식해서 생긴 오류

 

2. raw() 사용

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;

class login extends Controller
{
    public function login(){
        $id = $_POST['id'];
        $pw = $_POST['password'];
        
        $pass = 'PASSWORD('.$pw.')'; // 비밀번호 변수

        $pw1 = \DB::table('member')->where('pw', '=', \DB::raw('PASSWORD('.$pw.')'))->first();
        $check_pw = $pw1->pw; // 비밀번호 조회
       
        echo $check_pw; // 비밀번호 출력
        die();
    }
}

ㄴ DB::raw()을 사용하여 mysql password함수 사용

-  password함수안에서 php [.]으로 문자열 이어주기. ($pass 변수를 그대로 사용해도됨)

 

 

3. 확인

ㄴ 정상출력완료 (비밀번호를 password함수로 암호화한 값이 출력된 모습)

728x90