>  기사  >  데이터 베이스  >  꼭 봐야 할 것! PHP 개발자가 저지르는 MySQL 실수 10가지

꼭 봐야 할 것! PHP 개발자가 저지르는 MySQL 실수 10가지

silencement
silencement앞으로
2020-01-23 22:18:331774검색

꼭 봐야 할 것! PHP 개발자가 저지르는 MySQL 실수 10가지

1. InnoDB 대신 MyISAM을 사용하세요

MySQL에는 많은 데이터베이스 엔진이 있으며 일반적으로 MyISAM과 InnoDB가 사용됩니다.

MyISAM이 기본적으로 사용됩니다. 그러나 아주 간단한 데이터베이스를 구축하거나 실험적으로 수행하는 것이 아니라면 대부분의 경우 이는 잘못된 선택입니다.

MyISAM은 데이터 무결성 보장의 핵심인 외래 키 제약 조건을 지원하지 않습니다. 또한 MyISAM은 데이터를 추가하거나 업데이트할 때 전체 테이블을 잠그므로

향후 확장 성능에 큰 문제가 발생할 수 있습니다.

해결책은 간단합니다. InnoDB를 사용하세요. 하지만 여기서는 주로 MyISAM

2을 사용합니다. PHP의 mysql 메서드를 사용합니다

PHP는 처음부터 MySQL 함수 라이브러리를 제공했습니다. 많은 프로그램이 mysql_connect, mysql_query, mysql_fetch_assoc 등에 의존하지만 PHP 매뉴얼

에서는 다음을 권장합니다.

사용 중인 MySQL 버전이 4.1.3 이후인 경우 강력하게 권장됩니다. mysqli 확장을 사용하는 것이 좋습니다.

mysqli 또는 MySQL의 고급 확장에는 몇 가지 장점이 있습니다.

객체 지향 인터페이스가 있습니다.

준비된 명령문(준비된 명령문, 효과적으로 SQL 주입 공격을 방지하고 성능을 향상시킬 수 있습니다)

다중 문 및 트랜잭션 지원

또한 다중 데이터베이스를 지원하려면 PDO를 고려해야 합니다.

3. 사용자 입력을 필터링하지 않음

은 다음과 같아야 합니다. 사용자 입력을 신뢰하지 마세요. 백엔드 PHP를 사용하여 각 입력 정보를 확인하고 필터링합니다. Javascript를 신뢰하지 마십시오. 다음과 같은 SQL 문은 쉽게 공격받을 수 있습니다.

$username = $_POST["name"];  
$password = $_POST["password"];  
$sql = "SELECT userid FROM usertable WHERE username='$username'AND password='$password';"; // run query...

이와 같은 코드는 사용자가 "admin';"을 입력하면 다음과 동일합니다.

SELECT userid FROM usertable WHERE username='admin';
# 🎜🎜##🎜🎜 #

이 방법으로 침입자는 비밀번호를 입력하지 않고도 관리자로 로그인할 수 있습니다. 4. UTF-8을 사용하지 마세요

영국과 미국 국가의 사용자는 언어 문제를 거의 고려하지 않으므로 다른 곳에서는 사용할 수 없는 제품이 많습니다. 만능인. 많은 문제를 일으키는 GBK 인코딩도 있습니다.

UTF-8은 많은 국제화 문제를 해결합니다. PHP6은 이 문제를 더 완벽하게 해결할 수 있지만 MySQL의 문자 집합을 UTF-8로 설정하는 것을 막지는 않습니다.

5. SQL을 사용해야 하는 곳에는 PHP를 사용하세요


MySQL을 처음 사용하는 경우 가끔 해결하세요. 문제가 발생하면 먼저 익숙한 언어를 사용하여 문제를 해결하는 것을 고려해 볼 수 있습니다. 이로 인해 약간의 낭비가 발생하고 성능이 저하될 수 있습니다. 예를 들어, 평균을 계산할 때 MySQL 기본 AVG() 메서드는 사용되지 않습니다. 대신 PHP를 사용하여 모든 값을 반복한 다음 누적하여 평균을 계산합니다.

SQL 쿼리의 PHP 루프에도 주의하세요. 일반적으로 모든 결과를 얻은 후에 PHP를 반복하는 것이 더 효율적입니다.
일반적으로 대용량 데이터를 처리할 때는 강력한 데이터베이스 방식을 사용하면 효율성을 높일 수 있습니다.

6. 쿼리를 최적화하지 않음

99%의 PHP 성능 문제는 데이터베이스, 잘못된 SQL 문으로 인해 발생합니다. 전체 프로그램이 매우 느려질 수 있습니다. MySQL의 EXPLAIN 문, Query

Profiler 및 기타 여러 도구를 사용하면 이러한 잘못된 SELECT를 찾는 데 도움이 될 수 있습니다.
7. 잘못된 데이터 유형 사용

MySQL은 숫자, 문자열, 시간 등과 같은 일련의 데이터 유형을 제공합니다. 날짜를 저장하려면 DATE 또는 DATETIME 유형을 사용하세요. 정수나 문자열을 사용하면 상황이 더 복잡해집니다.

때때로 자신이 정의한 데이터 유형을 사용하고 싶을 때가 있습니다. 예를 들어 문자열을 사용하여 직렬화된 PHP 개체를 저장합니다. 데이터베이스를 추가하는 것은 쉬울 수 있지만 그렇게 하면 MySQL이

다루기 어려워지고 나중에 문제가 발생할 수 있습니다.

8. SELECT 쿼리에 *를 사용하세요. 필요한 데이터 필드만 꺼내면 됩니다. 모든 필드를 제거해야 하는 경우 테이블을

변경해야 할 수도 있습니다.
9. 과소 색인 또는 과잉 색인

일반적으로 SELECT 문에서 WHERE 뒤에 나타나는 모든 단어 인덱스 필드여야 합니다. 예를 들어 사용자 테이블에 숫자 ID(기본 키)와 이메일 주소가 있는 경우입니다. 로그인한 후 MySQL은 이메일을 통해 해당 ID를 찾아야 합니다. 인덱싱을 통해 MySQL은

검색 알고리즘을 통해 이메일을 빠르게 찾을 수 있습니다. 인덱스가 없으면 MySQL은 레코드를 찾을 때까지 모든 레코드를 확인해야 합니다.

이 경우 각 필드에 인덱스를 추가하고 싶을 수도 있지만 이로 인해 업데이트하거나 추가하면 데이터 양이 많을 때 인덱스가 다시 작성됩니다

# 🎜🎜 #, 성능 문제가 있을 것입니다. 따라서 필수 필드만 색인화하십시오.

10. 백업 없음

자주 발생하지는 않지만 데이터베이스가 손상되고, 하드 디스크가 손상되고, 서비스가 중지되는 등의 행위로 인해 데이터에 치명적인 손상이 발생할 수 있습니다. 따라서 데이터를 자동으로 백업하거나

을 백업하거나 복사본을 저장해야 합니다.

위 내용은 꼭 봐야 할 것! PHP 개발자가 저지르는 MySQL 실수 10가지의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 www.liqingbo.cn에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제