2012-12-27 6 views
0

방금 ​​추가 보안 쿠션에 대한 내 사이트의 코드를 모두 준비된 문으로 변환하기 시작했지만 동일한 질문을 실행하고 있습니다.Select 문에 준비된 문

일부 읽기 후에는 모든 선택 쿼리에 준비된 문을 사용하기로 결정했지만 준비된 문에서이 쿼리의 모든 변수를 "매개 변수"로 사용해야하는지는 확실하지 않습니다. 예를 들어

:

some_column가 null
  1. 어디에 some_column = $ _SESSION [ '일부 세션-VAR']
  2. 어디에 some_column
($ someArray) IN

또한 물음표를 사용하는 대신 각 조건에 "이름"을 부여하는 방법이 있습니까? 이전에 문서에서 본 것처럼 느껴졌지만 그 이후로 운이 없었습니다.

예 : Where city_name = :cityName. 그렇다면 여기에 매개 변수를 바인딩하는 방법은 무엇입니까?

감사합니다,

에반

답변

0

예. 쿼리로 이동하는 모든 데이터는 자리 표시자를 통해 추가해야합니다. 그렇지 않으면 보안이 전혀 없습니다.

준비된 문 극히 제한 및 지원은 스칼라 값, 그래서, 첫 번째와 세 번째 예 (예 태그에서 많이 발견 할 수있다) 당신이 PDO에, mysqli 돈을 속한 언급

명명 된 자리 코딩 추가로 필요하지만 그들을 지원하지 마라.

+0

NULL 문제 때문에, 이것은 트릭을 수행하는 것처럼 보인다 : $ price = NULL; // 참고 : 따옴표 없음 - PHP를 사용하여 NULL $ stmt = $ mysqli-> prepare ("SELECT id FROM product WHERE price <=>?"); // 가격이 null 인 제품을 선택합니다 $ stmt-> bind_param ($ price); 그러나 IN 문제는 어떻게해야합니까? 루프 또는 정렬? –