>  기사  >  백엔드 개발  >  MySQL 함수에서 PDO로 마이그레이션해야 하는 이유는 무엇입니까?

MySQL 함수에서 PDO로 마이그레이션해야 하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-11 05:29:03234검색

Why Should I Migrate from MySQL Functions to PDO?

MySQL 함수에서 PDO로 마이그레이션하는 방법

소개

PHP 5.5.0 MySQL 기능이 더 이상 사용되지 않음을 표시하므로 PDO 또는 데이터베이스 작업을 위한 MySQLi. 이 문서에서는 MySQL 및 MSSQL 서버를 모두 포함하여 코드를 PDO로 마이그레이션하기 위한 가이드를 제공합니다.

MySQL 함수가 더 이상 사용되지 않는 이유

MySQL 함수는 오래되었으며 보안에 취약합니다. 취약점으로 인해 최신 PHP 애플리케이션에 적합하지 않습니다. 편의 기능이 부족하고 안전하게 적용하기 어렵습니다. PDO 및 MySQL은 이러한 문제를 해결하고 상당한 개선을 제공합니다.

PDO를 사용하여 MySQL에 연결

  1. PHP 모듈 php_pdo_mysql.dll은 다음과 같습니다. 필수입니다.
  2. 다음을 사용하여 PDO 인스턴스를 생성합니다. DSN(데이터 소스 이름):

    • $dsn = 'mysql:dbname=databasename;host=127.0.0.1';
    • $dbh = 새 PDO ($dsn, $user, $password);

PDO로 MSSQL에 연결

  1. php_pdo_sqlsrv_##_ts.dll 설치 또는 php_pdo_sqlsrv_##_nts.dll 드라이버.
  2. DSN(데이터 소스 이름)을 사용하여 PDO 인스턴스를 생성합니다:

    • $dsn = 'sqlsrv:Server=127.0.0.1;Database=데이터베이스 이름';
    • $dbh = new PDO($dsn, $user, $password);

Prepared를 사용하여 쿼리 수행 명령문

PDO는 SQL 쿼리에 삽입된 사용자 입력을 삭제하여 SQL 주입을 방지하는 준비된 명령문을 사용합니다. 명령문을 준비하려면:

  1. ->prepare()를 사용하여 준비된 명령문을 만듭니다.

    • $SQL = 'SELECT ID, 사용자가 보낸 이메일 WHERE user = :username';
    • $stmt = $dbh->prepare($SQL);
  2. ->bindValue()를 사용하여 준비된 문에 매개변수를 바인딩합니다.

    • $stmt->bindValue(':사용자 이름', $username);

쿼리 실행

  1. ->를 사용하여 준비된 문을 실행합니다. 아무런 전달 없이 실행() 인수:

    • $stmt->execute();
  2. 직접 쿼리의 경우 ->query():

      $결과 = $dbh->query($SQL);

결과 가져오기

fetch() 가져오기 결과 세트의 단일 행. fetchAll()은 모든 행을 배열로 가져옵니다.

PDO용 샘플 클래스

class pdoConnection {
    // ...
    public function prepare($SQL, $params = array()) {
        $result = $this->connection->prepare($SQL);
        $result->execute($params);
        return $result;
    }
}

// Usage:
$SQL = 'SELECT ID, EMAIL FROM users WHERE user = :username';
$result = $db->prepare($SQL, array(":username" => 'someone'));

결론

MySQL 함수에서 PDO로 마이그레이션하려면 일부 코드 수정이 필요하지만 데이터베이스 보안을 크게 향상시키고 향후 PHP 버전에 맞게 애플리케이션을 준비합니다. 제공된 코드 샘플과 샘플 클래스는 원활한 전환에 도움이 됩니다.

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

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