>데이터 베이스 >MySQL 튜토리얼 >PHP에서 MySQL 함수를 PDO로 대체해야 하는 이유는 무엇입니까?

PHP에서 MySQL 함수를 PDO로 대체해야 하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-10 08:53:45712검색

Why Should I Replace MySQL Functions with PDO in PHP?

MySQL 함수에서 PHP의 PDO로 전환

PHP의 MySQL 기능은 더 이상 사용되지 않으며 최종적으로 제거될 예정입니다. 향후 호환성을 보장하고 향상된 보안 및 기능을 활용하려면 개발자는 강력한 객체 지향 데이터베이스 액세스 계층인 PDO(PHP Data Objects)로 마이그레이션해야 합니다.

PDO의 장점:

  • 현대화: PDO는 오래된 MySQL 기능을 현대적인 접근 방식으로 대체합니다.
  • 데이터베이스 불가지론: PDO는 MySQL뿐만 아니라 다양한 데이터베이스 시스템에 연결하기 위한 일관된 인터페이스를 제공합니다. 이는 데이터베이스 전환을 단순화하고 코드 이식성을 향상시킵니다.
  • SQL 주입 방지: PDO의 준비된 명령문은 주요 보안 문제인 SQL 주입 취약점을 방지하는 데 매우 중요합니다.

PDO를 사용하여 데이터베이스에 연결

MySQL 연결:

<code class="language-php">$dsn = 'mysql:dbname=databasename;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';

$dbh = new PDO($dsn, $user, $password);</code>

MSSQL 연결:

<code class="language-php">$dsn = 'sqlsrv:Server=127.0.0.1;Database=databasename';
$user = 'dbuser';
$password = 'dbpass';

$dbh = new PDO($dsn, $user, $password);</code>

준비된 문장으로 쿼리 실행

PDO는 효율적이고 안전한 쿼리 실행을 위해 준비된 문을 활용합니다. 변수를 바인딩하는 방법은 다음과 같습니다.

명명된 매개변수:

<code class="language-php">$statement = $dbh->prepare('SELECT * FROM users WHERE name = :username');
$statement->execute([':username' => 'example']);</code>

색인된 매개변수:

<code class="language-php">$statement = $dbh->prepare('SELECT * FROM users WHERE name = ?');
$statement->execute(['example']);</code>

쿼리 결과 가져오기

결과 검색을 용이하게 하는 여러 방법:

  • fetch(): 단일 행을 배열로 반환합니다.
  • fetchAll(): 모든 행을 배열의 배열로 반환합니다.
  • rowCount(): 영향을 받은 행 수를 제공합니다(INSERT, UPDATE, DELETE에 유용함).

PDO 연결 클래스 예시

향상된 코드 구성 및 재사용성을 위해 사용자 정의 PDO 클래스를 고려하십시오.

<code class="language-php">class MyPDO {
    public $dbh;

    public function __construct($dsn, $username, $password) {
        $this->dbh = new PDO($dsn, $username, $password);
        $this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }

    public function query($sql) {
        return $this->dbh->query($sql);
    }

    public function prepare($sql) {
        return $this->dbh->prepare($sql);
    }
}

// Example Usage:
$mypdo = new MyPDO($dsn, $username, $password);
$stmt = $mypdo->prepare('SELECT * FROM users WHERE name = :name');
$stmt->execute([':name' => 'example']);
while ($row = $stmt->fetch()) {
    echo $row['name'];
}</code>

위 내용은 PHP에서 MySQL 함수를 PDO로 대체해야 하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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