PHP开发者常犯的10个MySQL错误更正剖析_PHP
完全错误,反驳理由:
首先原文说MyISAM是默认使用的,而实际上到了MySQL 5.5.x,InnoDB已经成为了默认的表引擎。
另外,简单的使用InnoDB不是解决所有问题的方法,盲目的使用甚至会使应用性能下降10%乃至40%。
最佳方法还是针对具体业务具体处理,例如论坛中版块表,新闻分类表,各种码表等长时间不操作的表,还是要用性能优异的MyISAM引擎。
而需要用到事务处理的例如用户、账目、流水等严格要求数据完整性和时序性的,则需要用InnoDB引擎,并且应用也要用好事务处理机制。当然,事务处理必然要带来大量的性能损耗,但是这在简单高并发应用上是必须的。
最后,外键约束在公共web互联网应用上一般是不用的,因为他会严重影响性能。数据完整性还是靠程序员或者应用架构本身的健壮来维护。而正规的第三范式只是在企业内部MIS系统和12306这种网站上使用。
2.使用PHP的mysql方法
不完全错,但要酌情选用:
mysqli固然好,但是不是所有的服务器都为PHP编译了mysqli的支持。
当你的应用如果是能确定只用自己部署的服务器,而应用也是完全自己开发,则mysqli是最好的选择。
但是一旦你的应用有可能部署在虚拟主机或者由其他人部署(例如分布式项目),还是老老实实使用mysql函数集吧,好好封装一下或者使用成熟框架杜绝sql注入。
3.不过滤用户输入
这一点不用说了,要么MagicQuote,要么选用成熟框架。sql注入老话题了。
4.不使用UTF-8
大部分情况下对,但也要认真考虑:
要知道,一个UTF-8字符占3个字节,所以比GBK等其他编码的文件大33%。换句话说,相同的网页用UTF-8编码如果是100KB,那么换成GBK编码则只有66KB。所以即便你的PHP确定要用UTF-8,那么前端页面也要根据情况选择需要的编码。但是,如果PHP用UTF-8,前端模版是GBK,再加上模版引擎不强大,那么转码工作够你受的。所以尽可能的选用自己需要的编码,而不是简单的选择UTF-8了事。
最后啰嗦一句:UTF-8下:strlen("我")=3,而GBK下:strlen("我")=2
5.该用SQL的地方使用PHP
同样酌情考虑:
例如,有些人习惯在建表时,默认值填写CURRENT_TIMESTAMP,用来达到注册时间、发帖时间的效果。 或者在时间判断的SQL语句中,写类似SELECT x FROM tab1 WHERE regdate 正确做法是:不要使用MySQL的任何时间函数,而是在应用里计算时间。如果是分布式应用,一定要有时间服务器来统一管理时间。
而文中说的一些MySQL数学函数 ,也是要慎用。因为在大型应用中,数据库的负担往往是最大的,而复杂的WHERE语句又是造成慢查询的元凶。所以,要把计算尽可能的放在廉价的、不影响全局稳定的应用服务器上,而不是核心数据库上。
6.不优化查询
这点也不用说了,大型应用上甚至不允许使用各种JOIN,哪怕生写两条查询,查回来在用PHP合并数据。
7.使用错误的数据类型
INT,TinyINT,VARCHAR,CHAR,TEXT这些字段类型的合理选用无可厚非。
而Date、DateTime、TIMESTAMP这三种类型,在大型应用中是绝对不可以使用的,而是要用INT(10) UNSIGNED代替。
一个是性能,另外就是应用中尤其是PHP对UNIX_TIMESTAMP时间戳的转化实在太方便了。用Date要输出各种时间格式反而麻烦。
8.在SELECT查询中使用*
共勉
9.索引不足或者过度索引
索引是必须的,但是如果索引都解决不了的查询,考虑memcache或者nosql解决方案吧。
10.不备份
这条是作者凑数么?
11.另外:不考虑其他数据库
这条相当正确。应用中不仅要针对应用选择其他数据库,甚至还要针对具体的业务类型,在同一套应用中并行使用多种数据库。哪怕不是数据库,而是其他各种缓存、内存存储等解决方案。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

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

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

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

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

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

뜨거운 주제











MySQL 연결 오류 1049를 처리하는 방법은 무엇입니까? MySQL은 일반적으로 사용되는 관계형 데이터베이스 관리 시스템입니다. 많은 개발자와 시스템 관리자는 MySQL을 사용하여 데이터를 저장하고 관리합니다. 하지만 MySQL을 사용하다 보면 가끔 연결 오류 1049 문제가 발생하는 경우가 있습니다. 이 문서에서는 연결 오류 1049의 원인을 소개하고 이 문제를 해결하는 몇 가지 방법을 제공합니다. MySQL 연결 오류 1049는 일반적으로 데이터베이스가 존재하지 않거나 데이터베이스 이름이 잘못되어 발생합니다. MySQL 서비스에 접속하는 경우

제목: Unknowncolumn'column_name'in'fieldlist' - MySQL 오류 해결 방법: 필드 목록의 알 수 없는 열, 특정 코드 예제가 필요합니다. MySQL 데이터베이스를 쿼리 또는 작업에 사용할 때 "Unknowncolumn'과 같은 오류 메시지가 나타날 수 있습니다. column_name'in'fieldlist'", 즉 필드 목록에 알 수 없는 열 오류가 있습니다. 이것은 일반적으로

MySQL 데이터베이스 초기화 실패 문제를 해결하려면 다음 단계를 따르십시오. 권한을 확인하고 적절한 권한이 있는 사용자를 사용하고 있는지 확인하십시오. 데이터베이스가 이미 존재하는 경우 삭제하거나 다른 이름을 선택하십시오. 테이블이 이미 존재하는 경우 삭제하거나 다른 이름을 선택하십시오. 구문 오류가 있는지 SQL 문을 확인하세요. MySQL 서버가 실행 중이고 연결 가능한지 확인합니다. 올바른 포트 번호를 사용하고 있는지 확인하십시오. 다른 오류에 대한 자세한 내용은 MySQL 로그 파일이나 오류 코드 찾기를 확인하세요.

MySQL 연결 오류 1017을 처리하는 방법은 무엇입니까? MySQL은 웹 사이트 개발 및 데이터 저장에 널리 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 그러나 MySQL을 사용하다 보면 다양한 오류가 발생할 수 있습니다. 일반적인 오류 중 하나는 연결 오류 1017(MySQL 오류 코드 1017)입니다. 연결 오류 1017은 일반적으로 잘못된 사용자 이름이나 비밀번호로 인해 발생하는 데이터베이스 연결 실패를 나타냅니다. 제공된 사용자 이름과 비밀번호를 사용하여 MySQL이 인증에 실패한 경우

이번 글에서는 이전 Mysql 작업에서 PHP가 반환한 오류 메시지의 디지털 인코딩에 대해 자세히 설명하겠습니다. 편집자는 이것이 매우 실용적이라고 생각하므로 이 글을 읽고 뭔가를 얻을 수 있기를 바랍니다. . PHP를 사용하여 MySQL 오류 정보 반환 숫자 인코딩 소개 mysql 쿼리를 처리할 때 오류가 발생할 수 있습니다. 이러한 오류를 효과적으로 처리하려면 오류 메시지의 숫자 인코딩을 이해하는 것이 중요합니다. 이 기사에서는 PHP를 사용하여 MySQL 오류 메시지의 숫자 인코딩을 얻는 방법을 안내합니다. 오류 정보의 숫자 인코딩을 얻는 방법 1. mysqli_errno() mysqli_errno() 함수는 현재 MySQL 연결의 가장 최근 오류 번호를 반환합니다. 구문은 다음과 같습니다: $erro

MySQL은 매우 일반적으로 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템으로 안정성, 효율성, 유연성 등의 특성을 가지며 다양한 유형의 애플리케이션에 널리 사용됩니다. MySQL을 사용하다 보면 필연적으로 데이터베이스 복구 작업이 발생하게 되는데, MySQL 데이터베이스 복구 진행 상황을 정확하게 확인하는 방법이 더욱 중요한 문제가 되었습니다. MySQL 데이터베이스의 복구 진행 상황은 MySQL 오류 로그를 보면 확인할 수 있습니다. MySQL 오류 로그에는 모든 데이터베이스 작업 기록이 기록됩니다.

해결책: 1. 인덱스를 생성하거나 수정하는 열의 데이터 유형이 호환되는지 확인하기 위해 데이터 유형을 확인하십시오. 2. 인덱스를 생성하는 열에 함수나 표현식을 사용하지 마십시오. 인덱스된 열에 함수나 표현식을 사용해야 하며 명시적인 유형 변환을 사용해야 합니다. 4. 인덱스 및 데이터 유형에 대해 자세히 알아보려면 MySQL 버전과 설명서를 확인하세요. 5. 쿼리를 최적화하고 쿼리를 재평가하고 최적화하는 것을 고려하세요. 6. 다른 도구나 방법 등의 사용을 고려합니다.

개발 중에 MySQL을 자주 다루면 몇 가지 일반적인 오류에 직면하게 됩니다. 일부 오류로 인해 MySQL이 제대로 작동하지 않을 수 있으며 일부 오류는 프로그램 성능에 영향을 미칠 수 있습니다. 다음은 몇 가지 일반적인 MySQL 오류와 해결 방법입니다. MySQL 서버를 연결할 수 없습니다. MySQL 서버에 연결할 때 다음 오류가 발생할 수 있습니다: Can'tconnecttoMySQLserveron'localhost'(10061)Ac
