테스트 사이트 - 개발 중인 베타 버전입니다

PDO 그리고 쿼리 질문입니다. 채택완료

호롤룰롤 5년 전 조회 2,265

몇가지 궁금증이 생겨 질문글을 남기게 되었습니다.

 

PDO로 바인딩하여 쿼리를 날릴때 int 형식이 string으로 변환됩니다.... 왜그런지 모르겠습니다.

소스한번보시죠

 

</p>

<p>$pdo = new PDO($dns, 'id', 'pass'); //pdo 연결</p>

<p> </p>

<p>$bind = array(':id' => 1);  // int타입</p>

<p>$sql = "SELECT * FROM member WHERE idx = :idx";</p>

<p> </p>

<p>$stmt = $pdo->prepare($sql);</p>

<p>$stmt->execute($bind);</p>

<p>

 

 

위의 코드처럼 바인딩하여 조회를하는데요.

:id의 값이 int타입으로 넘겨주는데


SELECT * FROM member WHERE idx = 1

WHERE 조건절에 idx = 1 //int

이렇게 되어야 정상이라고 생각하는데

 

쿼리 로그를 보면

SELECT * FROM member WHERE idx = '1';

string 타입으로 변환하여 검색을 합니다.

이거 이렇게되도 상관없나요?

 

 

 

 

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트

$sql = "SELECT * FROM member WHERE idx = :idx";

$stmt = $pdo->prepare($sql);

$stmt->bindValue(":idx", 1, PDO::PARAM_INT);

$stmt->execute();

이런 식으로 처리해 보세요.

근데 mysql에서는 그게 문자열이든 정수든 상관 없습니다.

얘가 워낙 유연해서 문자열로 된 시간까지도 크기 비교를 해 줘서리...

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

e
5년 전

실제로 query 를 따로 실행해보시면 큰 차이가 없습니다.

숫자의 크기 비교까지도 정상적으로 됩니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

e
5년 전

실제로 query 를 따로 실행해보시면 큰 차이가 없습니다.

숫자의 크기 비교까지도 정상적으로 됩니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인