>백엔드 개발 >PHP 튜토리얼 >PDO_MYSQL/PDO_MYSQLND는 단일 문에서 여러 쿼리를 지원합니까?

PDO_MYSQL/PDO_MYSQLND는 단일 문에서 여러 쿼리를 지원합니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-26 09:33:10659검색

Does PDO_MYSQL/PDO_MYSQLND Support Multiple Queries in a Single Statement?

여러 쿼리에 대한 PDO 지원(PDO_MYSQL, PDO_MYSQLND)

원래 질문:

PDO의 부족함을 알고 있음에도 불구하고 단일 명령문에서 여러 쿼리를 실행하는 기능이 지원되면서 이에 대한 우려가 제기되었습니다. PDO_MYSQL 및 PDO_MYSQLND에서 이러한 기능을 지원할 수 있습니다.

답변:

PDO_MYSQL 및 PDO_MYSQLND 이해:

PDO_MYSQL은 감가 상각되고 다음으로 대체되었습니다. PHP 5.3의 PDO_MYSQLND. 그러나 이름은 PDO_MYSQL로 유지되어 MySQL PDO의 기본 드라이버가 됩니다.

PDO를 사용하여 여러 쿼리 실행:

한 번에 여러 쿼리를 실행하려면 다음이 필요합니다. 다음:

  • PHP 5.3 또는 더 높음
  • MySQLND
  • 에뮬레이트된 준비된 문(PDO::ATTR_EMULATE_PREPARES가 1로 설정됨, 이는 MySQL의 기본값임)

사용 exec:

$sql = "
DELETE FROM car;
INSERT INTO car(name, type) VALUES ('car1', 'coupe');
INSERT INTO car(name, type) VALUES ('car2', 'coupe');
";

$db->exec($sql);

참고: 이 방법은 상수 값을 포함하는 SQL로 제한됩니다.

문 사용:

$sql = "
DELETE FROM car;
INSERT INTO car(name, type) VALUES (:car1, :type1);
INSERT INTO car(name, type) VALUES (:car2, :type2);
";

$stmt = $db->prepare($sql);
$stmt->execute(
    ["car1" => "brand1", "type1" => "coupe", "car2" => "brand2", "type2" => "coupe"]
);

루프 오버 쿼리 결과:

오류를 확인하거나 결과를 수집하려면 문을 실행한 후 항상 쿼리 결과를 반복하여 쿼리해야 합니다.

에뮬레이트된 준비된 문에 대한 참고 사항:

  • SQL 주입 가능성을 방지하려면 DSN에 적절한 인코딩이 설정되어 있는지 확인하세요. 위험합니다.
  • 준비된 명령문을 에뮬레이션하면 약간의 성능 저하가 발생할 수 있습니다.

위 내용은 PDO_MYSQL/PDO_MYSQLND는 단일 문에서 여러 쿼리를 지원합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.