Heim Backend-Entwicklung PHP-Tutorial PHP开发者常犯的10个MySQL错误更正剖析_PHP

PHP开发者常犯的10个MySQL错误更正剖析_PHP

Jun 01, 2016 pm 12:12 PM
mysql错误

1.使用MyISAM而不是InnoDB

  完全错误,反驳理由:

  首先原文说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.另外:不考虑其他数据库

  这条相当正确。应用中不仅要针对应用选择其他数据库,甚至还要针对具体的业务类型,在同一套应用中并行使用多种数据库。哪怕不是数据库,而是其他各种缓存、内存存储等解决方案。
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie gehe ich mit dem MySQL-Verbindungsfehler 1049 um? Wie gehe ich mit dem MySQL-Verbindungsfehler 1049 um? Jun 29, 2023 am 09:50 AM

Wie gehe ich mit dem MySQL-Verbindungsfehler 1049 um? MySQL ist ein häufig verwendetes relationales Datenbankverwaltungssystem. Viele Entwickler und Systemadministratoren verwenden MySQL zum Speichern und Verwalten von Daten. Bei der Verwendung von MySQL tritt jedoch manchmal das Problem des Verbindungsfehlers 1049 auf. In diesem Artikel werden die Ursachen des Verbindungsfehlers 1049 vorgestellt und verschiedene Methoden zur Lösung dieses Problems aufgezeigt. Der MySQL-Verbindungsfehler 1049 wird normalerweise dadurch verursacht, dass die Datenbank nicht existiert oder der Datenbankname falsch ist. Beim Herstellen einer Verbindung zum MySQL-Dienst

Unbekannte Spalte „Spaltenname' in „Feldliste' – So beheben Sie den MySQL-Fehler: Unbekannte Spalte in der Feldliste Unbekannte Spalte „Spaltenname' in „Feldliste' – So beheben Sie den MySQL-Fehler: Unbekannte Spalte in der Feldliste Oct 05, 2023 am 10:44 AM

Titel: Unknowncolumn'column_name'in'fieldlist' – So beheben Sie den MySQL-Fehler: Unbekannte Spalte in der Feldliste, spezielle Codebeispiele sind erforderlich. Wenn Sie die MySQL-Datenbank für Abfragen oder Operationen verwenden, werden Sie manchmal auf die Fehlermeldung „Unknowncolumn“ stoßen. Spaltenname'in'Feldliste'", d. h. es liegt ein unbekannter Spaltenfehler in der Feldliste vor. Dies ist normalerweise der Fall

So beheben Sie einen MySQL-Datenbankinitialisierungsfehler So beheben Sie einen MySQL-Datenbankinitialisierungsfehler Apr 14, 2024 pm 07:12 PM

Um das Problem mit dem Initialisierungsfehler der MySQL-Datenbank zu beheben, führen Sie die folgenden Schritte aus: Überprüfen Sie die Berechtigungen und stellen Sie sicher, dass Sie einen Benutzer mit den entsprechenden Berechtigungen verwenden. Wenn die Datenbank bereits vorhanden ist, löschen Sie sie oder wählen Sie einen anderen Namen. Wenn die Tabelle bereits vorhanden ist, löschen Sie sie oder wählen Sie einen anderen Namen. Überprüfen Sie die SQL-Anweisung auf Syntaxfehler. Bestätigen Sie, dass der MySQL-Server ausgeführt wird und eine Verbindung hergestellt werden kann. Stellen Sie sicher, dass Sie die richtige Portnummer verwenden. Überprüfen Sie die MySQL-Protokolldatei oder den Fehlercode-Finder auf Details zu anderen Fehlern.

Was tun, wenn der MySQL-Verbindungsfehler 1017 auftritt? Was tun, wenn der MySQL-Verbindungsfehler 1017 auftritt? Jun 30, 2023 am 11:57 AM

Wie gehe ich mit dem MySQL-Verbindungsfehler 1017 um? MySQL ist ein relationales Open-Source-Datenbankverwaltungssystem, das häufig in der Website-Entwicklung und Datenspeicherung eingesetzt wird. Bei der Verwendung von MySQL können jedoch verschiedene Fehler auftreten. Einer der häufigsten Fehler ist der Verbindungsfehler 1017 (MySQL-Fehlercode 1017). Der Verbindungsfehler 1017 weist auf einen Datenbankverbindungsfehler hin, der normalerweise durch einen falschen Benutzernamen oder ein falsches Passwort verursacht wird. Wenn MySQL die Authentifizierung mit dem angegebenen Benutzernamen und Passwort nicht durchführen kann

PHP gibt die numerische Kodierung der Fehlermeldung in der vorherigen MySQL-Operation zurück PHP gibt die numerische Kodierung der Fehlermeldung in der vorherigen MySQL-Operation zurück Mar 22, 2024 pm 12:31 PM

In diesem Artikel wird die digitale Kodierung der von PHP im vorherigen MySQL-Vorgang zurückgegebenen Fehlermeldung ausführlich erläutert. Der Herausgeber hält dies für recht praktisch, daher teile ich es Ihnen als Referenz mit. Ich hoffe, dass Sie nach dem Lesen dieses Artikels etwas gewinnen können . . Verwenden von PHP zum Zurückgeben von MySQL-Fehlerinformationen Einführung in die numerische Kodierung Bei der Verarbeitung von MySQL-Abfragen können Fehler auftreten. Um diese Fehler effektiv behandeln zu können, ist es wichtig, die numerische Kodierung von Fehlermeldungen zu verstehen. Dieser Artikel führt Sie durch die Verwendung von PHP, um die numerische Kodierung von MySQL-Fehlermeldungen zu erhalten. Methode zum Erhalten der numerischen Kodierung von Fehlerinformationen 1. mysqli_errno() Die Funktion mysqli_errno() gibt die aktuellste Fehlernummer der aktuellen MySQL-Verbindung zurück. Die Syntax lautet wie folgt: $erro

So überprüfen Sie den Fortschritt der MySQL-Datenbankwiederherstellung So überprüfen Sie den Fortschritt der MySQL-Datenbankwiederherstellung Feb 24, 2024 pm 12:24 PM

MySQL ist ein sehr häufig verwendetes relationales Open-Source-Datenbankverwaltungssystem. Es zeichnet sich durch Stabilität, Effizienz, Flexibilität usw. aus und wird häufig in verschiedenen Arten von Anwendungen verwendet. Wenn Sie MySQL verwenden, werden Sie unweigerlich auf Datenbankwiederherstellungsvorgänge stoßen. Wie Sie den Fortschritt der MySQL-Datenbankwiederherstellung genau überprüfen können, ist zu einem wichtigeren Thema geworden. Der Wiederherstellungsfortschritt der MySQL-Datenbank kann durch Anzeigen des MySQL-Fehlerprotokolls abgerufen werden. Im MySQL-Fehlerprotokoll werden alle Datenbankbetriebsdatensätze aufgezeichnet.

So beheben Sie den MySQL-Fehler 1171 So beheben Sie den MySQL-Fehler 1171 Jan 09, 2024 pm 03:59 PM

Lösung: 1. Überprüfen Sie die Datentypen, um sicherzustellen, dass die Datentypen in den Spalten, die Sie im Index erstellen, kompatibel sind. 2. Vermeiden Sie die Verwendung von Funktionen oder Ausdrücken für die Spalten, in denen Sie den Index erstellen Sie müssen Funktionen oder Ausdrücke für indizierte Spalten verwenden. Stellen Sie sicher, dass Sie eine explizite Typkonvertierung verwenden. 4. Überprüfen Sie die MySQL-Version und die Dokumentation, um mehr über Indizes und Datentypen zu erfahren. 5. Optimieren Sie Abfragen. Erwägen Sie eine Neuauswertung und Optimierung Ihrer Abfragen effektive Nutzung von Indizes; 6. Erwägen Sie die Verwendung anderer Tools oder Methoden usw.

Sammlung von Lösungen für häufige MySQL-Fehler Sammlung von Lösungen für häufige MySQL-Fehler Jun 15, 2023 pm 02:58 PM

Wenn Sie während der Entwicklung häufig mit MySQL arbeiten, werden Sie auf einige häufige Fehler stoßen. Einige Fehler führen dazu, dass MySQL nicht ordnungsgemäß funktioniert, andere beeinträchtigen die Leistung des Programms. Hier sind einige häufige MySQL-Fehler und ihre Lösungen. Beim Herstellen einer Verbindung zum MySQL-Server kann die folgende Fehlermeldung auftreten: Can'tconnecttoMySQLserveron'localhost'(10061)Ac

See all articles