php에서 pdo :: pdostatement-> bindparam ()가 예상대로 작동합니까?

StackOverflow https://stackoverflow.com/questions/1445540

  •  22-07-2019
  •  | 
  •  

문제

나는 처음으로 PHP에서 PDO를 시험해보고있다. 나는 pdostatement-> bindparam ()이 SQL 쿼리에 전달한 값의 데이터 유형을 설정하는 멋진 방법이라고 생각했습니다. 그러나 어떻게 든 그것은 나를 위해 효과가 없습니다. 예를 들어 BindParam Call에서 int로 변수 유형을 설정했습니다. 그러나 순수한 문자열 값을 전달하더라도 여전히 오류가 발생하지 않습니다. 어쩌면 내가 뭔가 잘못하고 있을지도 몰라요. 코드의 스 니펫은 다음과 같습니다.

$query = "select * from PDO_TABLE where A_COLUMN = :test1 or B_COLUMN = :test2";

$test1 = '0';
$test2 = 'a';
$preparedStatement = $conn->prepare($query);

echo $preparedStatement->bindParam(':test1', $test1, PDO::PARAM_INT);
echo $preparedStatement->bindParam(':test2', $test2, PDO::PARAM_INT);

$preparedStatement->execute();

내가 모든 것을 제대로하고 있습니까? 이것이 매개 변수 test2에 오류를 던져야합니까?

도움이 되었습니까?

해결책

PDO는 예외를 던지지 않거나 오류를 제기하지 않지만 매개 변수를 정수/long으로 변환합니다. 예 : PDO_STMT.C에서 :

if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_INT && Z_TYPE_P(param->parameter) == IS_BOOL) {
  convert_to_long(param->parameter);
}

즉, PDO_INT로 매개 변수를 등록했지만 변수가 부울 PDO를 보유하면 bool을 int/long으로 변환합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top