일반적인 PHP 데이터베이스 분석 및 소개 Solutions_php 기술
May 16, 2016 pm 08:07 PMPHP를 사용하여 데이터베이스에 연결할 때 많은 문제에 직면하게 됩니다. 이 기사에서는 데이터베이스 스키마 설계, 데이터베이스 액세스 및 데이터베이스를 사용하는 비즈니스 로직 코드를 포함하여 PHP 애플리케이션에서 발생하는 일반적인 데이터베이스 문제와 해당 솔루션을 설명합니다. 데이터베이스를 사용하는 방법이 하나만 올바른 경우.
PHP 데이터베이스 문제: MySQL을 직접 사용
일반적인 문제는 이전 PHP 코드가 mysql_ 함수를 직접 사용하여 데이터베이스에 액세스한다는 것입니다. 목록 1은 데이터베이스에 직접 액세스하는 방법을 보여줍니다.
목록 1. 접속/get.php
1 2 3 4 5 6 7 8 9 10 11 |
|
mysql_connect 함수는 데이터베이스에 액세스하는 데 사용됩니다. 또한 문자열 연결을 사용하여 $name 매개 변수를 쿼리에 추가하는 쿼리에 유의하세요. 이 기술에 대한 두 가지 좋은 대안이 있습니다. PEAR DB 모듈과 PDO(PHP Data Objects) 클래스입니다. 둘 다 특정 데이터베이스 선택의 추상화를 제공합니다. 따라서 IBM® DB2®, MySQL, PostgreSQL 또는 연결하려는 기타 데이터베이스를 크게 조정하지 않고도 코드를 실행할 수 있습니다. PEAR DB 모듈과 PDO 추상화 계층을 사용하는 또 다른 가치는 SQL 문에서 ? 연산자를 사용할 수 있다는 것입니다. 이렇게 하면 SQL을 유지 관리하기가 더 쉬워지고 SQL 삽입 공격으로부터 애플리케이션을 보호할 수 있습니다.
목록 2. 접속/get_good.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
$dsn의 데이터베이스 연결 문자열을 제외하고 MySQL의 직접적인 사용은 모두 제거되었습니다. 또한 ? 연산자를 통해 SQL에서 $name 변수를 사용합니다. 그런 다음 쿼리 데이터는 query() 메서드 끝에 있는 배열을 통해 전송됩니다.
PHP 데이터베이스 문제: 자동 증가 기능이 사용되지 않습니다
대부분의 최신 데이터베이스와 마찬가지로 MySQL에는 레코드별로 자동 증가하는 고유 식별자를 생성하는 기능이 있습니다. 그 외에도 먼저 SELECT 문을 실행하여 가장 큰 ID를 찾은 다음 해당 ID를 1씩 증가시키고 새 레코드를 찾는 코드를 볼 수 있습니다. Listing 3에서는 잘못된 패턴의 예를 보여줍니다.
목록 3. Badid.sql
1 2 3 4 5 6 7 8 9 |
|
여기서 id 필드는 단순히 정수로 지정됩니다. 따라서 고유해야 하더라도 CREATE 문 다음에 오는 여러 INSERT 문에 표시된 대로 값을 추가할 수 있습니다. 목록 4에서는 이러한 유형의 패턴에 사용자를 추가하는 PHP 코드를 보여줍니다.
목록 4. Add_user.php
add_user.php의 코드는 먼저 id의 최대값을 찾는 쿼리를 수행합니다. 그런 다음 파일은 id 값을 1씩 증가시켜 INSERT 문을 실행합니다. 이 코드는 과부하가 걸린 서버의 경쟁 조건으로 인해 실패합니다. 게다가 비효율적이기도 합니다. 그렇다면 대안은 무엇입니까? MySQL의 자동 증가 기능을 사용하여 각 삽입에 대한 고유 ID를 자동으로 생성하십시오.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
이 글의 소개를 통해 PHP 데이터베이스 솔루션에 대한 이해를 높이는 데 도움이 되기를 바랍니다.

인기 기사

인기 기사

뜨거운 기사 태그

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Laravel Back End : Part 2, React가있는 React 앱 구축

PHP의 컬 : REST API에서 PHP Curl Extension 사용 방법
