MySQL 또는 MySQLi 중 어느 것이 더 낫습니까? 그리고 왜? 어느 것을 사용해야합니까?
성능 측면뿐만 아니라 다른 관련 기능이 더 좋습니다.
MySQL 또는 MySQLi 중 어느 것이 더 낫습니까? 그리고 왜? 어느 것을 사용해야합니까?
성능 측면뿐만 아니라 다른 관련 기능이 더 좋습니다.
답변:
MySQL Enhanced Extension Overview를 살펴보면 , 둘 사이의 차이점에 대해 알아야 할 모든 것을 알려줄 것이다.
유용한 주요 기능은 다음과 같습니다.
mysql, mysqli 및 PDO 중에서 선택하는 데 도움이되는 매뉴얼 페이지가 있습니다.
PHP 팀은 새로운 개발을 위해 mysqli 또는 PDO_MySQL을 권장합니다.
mysqli 또는 PDO_MySQL 확장을 사용하는 것이 좋습니다. 새로운 개발에는 이전 mysql 확장을 사용하지 않는 것이 좋습니다. 자세한 기능 비교 매트릭스가 아래에 제공됩니다. 세 확장의 전반적인 성능은 거의 같은 것으로 간주됩니다. 확장 기능의 성능은 PHP 웹 요청의 총 실행 시간 중 일부에 불과합니다. 종종 영향은 0.1 % 정도로 낮습니다.
이 페이지에는 확장 API를 비교하는 기능 매트릭스도 있습니다. mysqli와 mysql API의 주요 차이점은 다음과 같습니다.
mysqli mysql
Development Status Active Maintenance only
Lifecycle Active Long Term Deprecation Announced*
Recommended Yes No
OOP API Yes No
Asynchronous Queries Yes No
Server-Side Prep. Statements Yes No
Stored Procedures Yes No
Multiple Statements Yes No
Transactions Yes No
MySQL 5.1+ functionality Yes No
* http://news.php.net/php.internals/53799
라이브러리를 비교하는 추가 기능 매트릭스가 있습니다 (new mysqlnd 대 libmysql).
그리고 매우 철저한 블로그 기사
mysqli 사용을 포기했습니다. 단순히 너무 불안정합니다. mysqli를 사용하여 PHP를 중단시키는 쿼리가 있지만 mysql 패키지와 잘 작동합니다. 또한 mysqli는 LONGTEXT 열에서 충돌합니다 . 이 버그는 적어도 2005 년 이후 다양한 형태로 제기되었으며 여전히 깨졌습니다 . 솔직히 준비된 문장을 사용하고 싶지만 mysqli는 충분히 신뢰할 수 없습니다 (그리고 그것을 고치는 사람은 아무도 없습니다). 준비된 진술을 정말로 원한다면 PDO와 함께하십시오.
나를 위해 준비된 진술은 필수 기능입니다. 보다 정확하게는 매개 변수 바인딩 (준비된 명령문에서만 작동). SQL 명령에 문자열을 삽입하는 유일한 방법입니다. 나는 '탈출'기능을 정말로 믿지 않습니다. DB 연결이 이진 프로토콜인데 매개 변수에 ASCII 제한 서브 프로토콜을 사용하는 이유는 무엇입니까?