>  기사  >  백엔드 개발  >  PHP pdo의 간단한 사용 (1)

PHP pdo의 간단한 사용 (1)

WBOY
WBOY원래의
2016-08-08 09:25:14988검색

소개:

PDO 확장은 PHP가 데이터베이스에 액세스하기 위한 가볍고 일관된 인터페이스를 정의하므로 어떤 데이터베이스가 사용되더라도 데이터를 쿼리하고 검색할 수 있습니다. 일관된 기능을 통해 수행될 수 있습니다.

일관된 기능과 작성 방법을 통해 다양한 데이터베이스를 운영할 수 있는 데이터베이스 액세스 추상화 계층을 제공합니다. 이는 향후 데이터베이스 마이그레이션에 도움이 되고 물론 보안도 향상됩니다.

비교:

PHP는 mysql을 예로 사용합니다. 일반적으로 사용되는 방법에는 php_mysql, php_mysqli, pdo가 있습니다

1. php_mysql과 php_mysqli는 이식성이 없으며 mysql에만 적용할 수 있습니다. 데이터베이스, pdo 등을 쉽게 이식할 수 있습니다.

2.php_mysql은 PHP를 처음 접할 때 데이터베이스 조작을 배우는 함수이지만 실제로 거의 사용하지 않는 함수인데 가장 중요한 점은 보안 문제를 쉽게 일으킬 수 있다는 것입니다.

SQL 주입이 있으므로 PHP는 mysql_real_escape_string 함수를 제공합니다. 변수가 많은 경우 각각 mysql_real_escape_string을 거쳐야 합니다.

대신 매우 귀찮아집니다.

3.pdo는 전처리 기능을 지원하므로 SQL 삽입을 효과적으로 방지하고 효율성을 높일 수 있습니다.

4.php_mysqli와 pdo는 모두 객체 지향을 지원합니다.

5.pdo 긴 연결 방식이 php_mysqli보다 성능이 좋습니다(온라인 정보 참고)

php_mysql 방식의 장점은 더 이상 크지 않으며, php_mysqli의 가장 치명적인 점은 데이터베이스를 변경하지 않을 것이라는 확신이 없으면 다른 데이터베이스로 이식할 수 없다는 것입니다. 분명히 데이터베이스에 연결하는 pdo 방법이 추세가 될 것입니다.

pdo 간단한 데이터베이스 작업:

먼저 php는 php-pdo 관련 확장을 활성화해야 합니다

<?php

$dbType = &#39;mysql&#39;;
$dbUser = &#39;root&#39;;
$dbPass = &#39;simael&#39;;
$dbhost = &#39;localhost&#39;;
$dbName = &#39;pdotest&#39;;
$dsn="$dbType:host=$dbhost;dbname=$dbName";
try{
    $pdo = new PDO($dsn, $dbUser, $dbPass); 
    echo "PDO成功连接MySQL数据库!";
}catch(PDOException $exception){
    echo $exception->getMessage();
}

데이터 삽입

<?php
//$pdo->query('set names utf8');
$sql = "INSERT INTO la_comments SET nick_name='formPdo',email='pdo@pdo.com',comment='中文comment',page_id='11',created_at=NOW(),updated_at=NOW()";
$res1 = $pdo->exec($sql);
var_dump($res1);

이때 데이터베이스에 가보니 여러 가지 코딩 문제로 인해 한자가 깨질 수 있는 것을 봤습니다

코드 추가

$pdo->query('set names utf8');
헤더가 gbk로 인코딩되었을 가능성이 있어 데이터 저장에 여전히 오류가 있습니다

온라인에서 정리한 주의가 필요한 코딩 문제는 다음과 같습니다. :

1. 서버 프로그램은 header("Content-type: text/html; charset=utf-8")와 같은 인코딩을 선언합니다.
2. 클라이언트는 다음과 같은 인코딩을 선언합니다.
3. 데이터베이스 인코딩, 테이블 및 필드 인코딩
4. 파일 자체의 인코딩 속성
5. 데이터베이스에 연결할 때 $ pdo->query('set names utf8');

과 같이 인코딩을 선언해 주세요. 문제는 일반적으로 해결될 것입니다.

전체 샘플 코드: (파일 자체도 utf8로 인코딩되어야 함)

$dbType = 'mysql';
$dbUser = 'root';
$dbPass = 'simael';
$dbhost = 'localhost';
$dbName = 'pdotest';
$dsn="$dbType:host=$dbhost;dbname=$dbName";
try{
	$pdo = new PDO($dsn, $dbUser, $dbPass,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES'utf8';")); 
	//$pdo = new PDO($dsn, $dbUser, $dbPass); 
    echo "PDO成功连接MySQL数据库!";
}catch(PDOException $exception){
	echo $exception->getMessage();
}

$pdo->query('set names utf8');
$sql = "INSERT INTO la_comments SET nick_name='formPdo',email='pdo@pdo.com',comment='中文comment',page_id='11',created_at=NOW(),updated_at=NOW()";
$res1 = $pdo->exec($sql);
var_dump($res1);

$sql = "SELECT * FROM la_comments";
$res2 = $pdo->query($sql);
while($row = $res2->fetch()){
	print_r($row);
	echo '
'; } $pdo = null; ?>




위 내용을 포함하여 php pdo의 간단한 사용법(1)을 소개하고 있는데, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되었으면 좋겠습니다.

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