쿼리는에서 : 는 뭔가요?
본문
외주업체에서 만든 코드를 받았는데
$strSQL = " select * from mpr_media where agency=:agency ";
이런게 있네요. : 는 무슨 뜻인가요?
답변 3
$strSQL = " select * from mpr_media where agency=:agency ";
$stmt = $pdo->prepare($strSQL);
$stmt->bindValue(":agench", $agency, PDO::PARAM_STR);
위에 올리신 글 밑에서 혹시 이런 비슷한 게 보이나 보세요. bindValue 말고 bindParam 이런 것도 있습니다.
요즘은 잘 안 써서 정확히 기억은 안 나는데 칼럼명에 저렇게 생긴 문자열 대입해서 하는 게 pdo에서 쓰는 방식이라서요.
mysql 에서 := 는 대입 연산자 입니다.
일반적으로
update 문에서 = 을 쓰면 대입 연산자가 되죠
update 테이블 set a=1 <= a칼럼에 1을 대입하란 의미죠
select 에서 = 은 비교연산자 입니다
select * 테이블 where a=1 <= a칼럼이 1인지 비교하게 됩니다.
select 에서 대입연산자 라는 것은 지정해주기 위해서
select * 테이블 where a := a
이런식으로 처리해줍니다
위 쿼리 상단에
set @agency = ""; 처럼 상수가 정의되어있을껀데
이값을 비교연산자가 아닌 대입연산자로 처리해주기 위해서 위처럼 사용합니다
https://je0n-je.tistory.com/103
https://offbyone.tistory.com/1
https://github.com/0x00000FF/DaechungCon-Prepared-Statement
등을 참고하세요.