[SQL] PDO-> 쿼리 ()와 PDO-> 간부의 차이 ()
SQLPDO-> 쿼리 ()와 PDO-> 간부의 차이 ()
PDO에 대한 참조가 itself--을 PDO PDO 개체와 동일하지하자
난 둘 다 PDO-> 쿼리 ()와 PDO-> 간부 ()가 있다는 것을 여기를 참조하십시오. 링크 된 페이지에서 그것은 나타납니다 PDO-> 쿼리 (); UPDATE, INSERT, DELETE 문에 사용되는 SELECT 문 만하고 PDO-> 간부 ()에 사용됩니다. 나는 확실히 나는 다른 방법을 사용하는 이유에 대한 설명을 부탁드립니다 때문에, 아직은 그것을 사용의 측면에서에 무슨 일이 아니에요, 그래서 지금, 나는 새로운 PDO에 브랜드를 오전, 왜 다른 방법이있다.
해결법
-
==============================
1.그래서,의 우려 아무것도 없다 - 어떤 이론적 인 차이에도 불구하고, 이러한 기능의 아무도 어쨌든 사용 될 수 없습니다.
그래서,의 우려 아무것도 없다 - 어떤 이론적 인 차이에도 불구하고, 이러한 기능의 아무도 어쨌든 사용 될 수 없습니다.
PDO를 사용하는 유일한 이유는 준비된 문을 지원하지만 이러한 기능을 제공 그것의 없음입니다. 그래서, 그들은 사용할 수 없습니다.
사용 준비 () / 실행 () 대신에, 특히 UPDATE, INSERT, DELETE 문에 대한.
준비된 문은 널리 보안 조치로 광고하고 있지만, 그것은 사람들의 관심을 끌기 아니라 있습니다. 그러나 그들의 진짜 목적은 적절한 쿼리 형식이다. 어느도 당신에게 보안을 제공합니다 - 올바른 형식의 쿼리가 아니라 주입 할 수 없기 때문에 - 다만 부작용으로. 그러나 다시 - 포맷이 제대로 포맷되지 않은 경우에도 무고한 데이터 쿼리 오류가 발생할 수 있습니다해서, 차 목표입니다.
편집하다: 단지 TRUE 또는 FALSE () 반환을 실행 노트는 작업의 성공을 표시하기 바랍니다. 이러한 UPDATE 영향 레코드의 개수와 같은 다른 정보는, 예를 rowCount () 등의 방법이 제공된다. 해당 문서를 참조하십시오.
-
==============================
2.PDO의 공식 문서 봐 :
PDO의 공식 문서 봐 :
두 기능은 쿼리를 실행하지만, 간부는 ()는 영향을받는 행의 수를 반환합니다. 유용 아무것도 반환되지 않습니다 업데이트 쿼리에 유용하며 행의 적절한 수를 수정 한 경우 알고에만 유용합니다.
-
==============================
3.난 당신이 어떤 주어진 상황에 사용되어야하는 결정하는 데 도움이 시도하는 흐름도를 만든 :
난 당신이 어떤 주어진 상황에 사용되어야하는 결정하는 데 도움이 시도하는 흐름도를 만든 :
PDOStatement 바운드 변수와 함께) (준비 :: 것이다 :
당신은 어떤 상황에서도, 쿼리에 직접 사용자 입력을 넣어해서는 안됩니다. ) 대신 PDO의 :: 간부를 () 쿼리에 값이없는 당신이 PDO :: 쿼리를 (사용하기로 결정한 경우 PDOStatement를 사용하는 경우, 또는 :: 대신 다른 두 가지 중 하나의) (준비가되지 않습니다 보안 문제,하지만 더 효율 문제.
"그러나 나는 데이터베이스에 넣어 준비가 문을 사용하는 경우? 데이터베이스에서 변수를 어떻게 당기면 그것은 바로, 준비된 문없이 다른 쿼리에 바로 넣어 것이 안전?"
기필코 아니다. 데이터베이스에 삽입 할 때 당신은 준비된 문을 사용해서 미래의 쿼리를 소독하지 않습니다. 당신은 후속 쿼리에 해당 값을 사용하는 경우 다시 준비된 문을 사용해야합니다.
"하지만 난 그냥 수동으로 하드 코드는 쿼리에 캐릭터 라인은, 다음이 안전 오른쪽 준비된 문없이 다른 쿼리로 그들을 똑바로 무엇을 입력하면?"
예, 그것은 안전 ... 지금. 어쩌면 오늘은 그것을 하드 코딩하고 있습니다. 데이터베이스의 편집에 해당 필드를 사용자 내일 나는 데이터베이스에서 당겨, 그리고 그 후 나는 할 수 있습니다. 그러나 나는 돌아가서 보증 무결성 준비된 문을 사용하는 쿼리를 업데이트 할 기억? 아마 아닙니다. 준비된 문은 당신이 당신의 쿼리에서 값을 보내는 언제든지 단지 좋은 방법입니다.
"나는 지금까지 직접 쿼리에 값을 넣을 수 있습니까?"
내가 쿼리에 직접 값을 넣을 수있는 유일한 시간은 부울 값 (1 또는 0), 빈 문자열, 또는 NULL을 전송, 예를 들어, 일 것이다. 이 호의 어느 하나에 해당하는 경우에는, 값이 아닌 변수로, 오른쪽 쿼리에 하드 코딩 될 것이다.
from https://stackoverflow.com/questions/16381365/difference-between-pdo-query-and-pdo-exec by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 SSIS에서 동적 입력 및 출력 열을 매핑하는? (0) | 2020.05.27 |
---|---|
[SQL] 크로스 중복 조합없이 가입 (0) | 2020.05.27 |
[SQL] SQLite는의 GROUP_CONCAT (0) | 2020.05.27 |
[SQL] WHERE 절을 사용하여 여러 테이블 MySQL을 UPDATE 구문 (0) | 2020.05.27 |
[SQL] MySQL은 # 1140 - GROUP 컬럼의 혼합 (0) | 2020.05.27 |