Maison > base de données > tutoriel mysql > Résumé de 11 erreurs courantes commises lors des appels MySQL

Résumé de 11 erreurs courantes commises lors des appels MySQL

黄舟
Libérer: 2017-03-21 13:51:35
original
1067 Les gens l'ont consulté

Pour de nombreux novices, l'utilisation de PHP permet d'écrire facilement du code avec des fonctions spécifiques en quelques heures seulement. Cependant, construire une base de données stable et fiable nécessite du temps et des compétences. L'article suivant résume onze erreurs courantes commises par les novices appelant mysql. Les amis qui en ont besoin peuvent s'y référer.

Avant-propos

Vous pouvez souvent recevoir des e-mails d'avertissement du service Sécurité concernant l'injection SQL, les vulnérabilités d'attaque XSS, etc. . et vous faites parfois piéger par des pirates informatiques, êtes-vous déprimé ? De plus, l'exécution de la base de données est trop lente (selon l'expérience, cela est essentiellement dû à une mauvaise utilisation de l'index correctement. Suivons l'éditeur pour jeter un œil à 11 erreurs courantes commises par les novices MYSQL).

1. Utilisez MyISAM au lieu d'InnoDB

MySQL possède de nombreux moteurs de base de données, et MyISAM et InnoDB sont généralement utilisés.

MyISAM est utilisé par défaut. Mais à moins que vous ne construisiez une base de données très simple ou que vous ne le fassiez simplement de manière expérimentale, ce n’est la plupart du temps pas un bon choix. MyISAM ne prend pas en charge les contraintes de clé étrangère, ce qui est l'essence même de la garantie de l'intégrité des données. De plus, MyISAM verrouillera la table entière lors de l'ajout ou de la mise à jour de données, ce qui entraînera de gros problèmes dans les performances d'expansion futures.

La solution est simple : utilisez InnoDB.

2. Utilisez la méthode mysql de PHP

PHP a fourni des fonctions MySQL depuis le début de la bibliothèque. De nombreux programmes s'appuient sur mysql_connect, mysql_query, mysql_fetch_assoc, etc., mais

Le manuel PHP recommande :

Si la version de MySQL que vous utilisez est la 4.1. 3 Après cela, il est fortement recommandé d'utiliser l'extension mysqli.

mysqli, ou l'extension avancée de MySQL, présente certains avantages :

possède une interface orientée objet

instructions préparées, qui peut empêcher efficacement les attaques par injection SQL et améliorer les performances)

Prend en charge plusieurs instructions et transactions

De plus, si vous souhaitez prendre en charge plusieurs bases de données, vous devriez envisager de vérifier hors AOP.

3. Ne filtrez pas les entrées de l'utilisateur.

devrait être : Ne jamais faire confiance à l'utilisateur. entrer. Utilisez PHP back-end pour vérifier et filtrer chaque information d'entrée. Ne faites pas confiance à JAVAscript. Les instructions SQL comme celles-ci sont facilement attaquées :

$username = $_POST["name"]; 
$password = $_POST["password"]; 
$sql = "SELECT userid FROM usertable WHERE username='$username'AND password='$password';"; // run query...
Copier après la connexion

Un code comme celui-ci, si l'utilisateur saisit "admin';", est équivalent à ce qui suit :

SELECT userid FROM usertable WHERE username='admin';
Copier après la connexion

De cette façon , l'intrus peut se connecter en tant qu'administrateur sans saisir de mot de passe.

4. N'utilisez pas UTF-8

Ces utilisateurs au Royaume-Uni et les États-Unis le sont très peu. Une moindre prise en compte des questions linguistiques entraînera la création de nombreux produits qui ne pourront pas être utilisés ailleurs. Il existe également certains encodages GBK qui causeront beaucoup de problèmes.

UTF-8 résout de nombreux problèmes d'internationalisation. Bien que PHP6 puisse résoudre ce problème plus parfaitement, cela ne vous empêche pas de définir le jeu de caractères de MySQL sur UTF-8.

5. Utilisez PHP là où SQL doit être utilisé

Si vous êtes nouveau sur MySQL, cela peut parfois résoudre le problème Parfois, vous pouvez envisager d'utiliser d'abord une langue que vous connaissez. Cela peut entraîner du gaspillage et de mauvaises performances. Par exemple : lors du calcul de la moyenne, la méthode native AVG() de MySQL n'est pas utilisée. Au lieu de cela, PHP est utilisé pour parcourir toutes les valeurs, puis les accumuler pour calculer la moyenne.

Faites également attention à la boucle PHP dans la requête SQL. Il est souvent plus efficace de parcourir PHP une fois que tous les résultats ont été obtenus.

En général, lors du traitement de grandes quantités de données, l'utilisation de méthodes de base de données puissantes peut améliorer l'efficacité.

6. Ne pas optimiser les requêtes

99% des problèmes de performances PHP sont causés par la base de données, une mauvaise règle Les instructions SQL peuvent rendre l'ensemble de votre programme très lent. L'instruction EXPLAIN de MySQL, Query Profiler et de nombreux autres outils peuvent vous aider à trouver ces vilains SELECT.

7. Utiliser le mauvais type de données

MySQL fournit une série de nombres et caractères Types de données tels que chaîne, heure, etc. Si vous souhaitez stocker des dates, utilisez le type DATE ou DATETIME. L'utilisation d'entiers ou de chaînes complique les choses.

Parfois, vous souhaitez utiliser votre propre type de données, par exemple en utilisant des chaînes pour stocker des objets PHP sérialisés. L'ajout de bases de données peut être facile, mais MySQL devient alors compliqué et peut causer des problèmes plus tard.

8. Utilisez *

dans la requête SELECT. N'utilisez pas * pour renvoyer tous les champs de la table. Ce sera très lent. Il vous suffit de supprimer les champs de données dont vous avez besoin. Si vous devez supprimer tous les champs, votre table devra peut-être être modifiée.

9. Sous-indexation ou surindexation

De manière générale, l'index doit apparaître après OÙ dans le Instruction SELECT Tous les champs.

Par exemple, disons que notre table d'utilisateurs a un identifiant numérique (clé primaire) et une adresse e-mail. Une fois connecté, MySQL devrait trouver l'ID correspondant par e-mail. Grâce à l'indexation, MySQL peut localiser rapidement les e-mails grâce à l'algorithme de recherche. Sans index, MySQL devrait vérifier chaque enregistrement jusqu'à ce qu'il soit trouvé.

Dans ce cas, vous souhaiterez peut-être ajouter un index à chaque champ, mais la conséquence de cela est que lorsque vous mettrez à jour ou ajouterez, l'index sera refait lorsque la quantité de données sera grand, il y aura des problèmes de performances. Par conséquent, indexez uniquement les champs obligatoires.

10. Aucune sauvegarde

Cela n'arrive peut-être pas souvent, mais la base de données est endommagée, le disque dur est endommagé. cassé, le service est arrêté, etc. etc., cela causera des dommages catastrophiques aux données. Vous devez donc vous assurer de sauvegarder automatiquement vos données ou d’en enregistrer une copie.

11. De plus : les autres bases de données ne sont pas considérées.

MySQL est peut-être la base de données la plus couramment utilisée en PHP. , mais ce n’est pas non plus la seule option. PostgreSQL et Firebird sont également des concurrents. Ils sont tous deux open source et ne sont pas contrôlés par certaines sociétés. Microsoft fournit SQL Server Express, Oracle propose 10g Express et ces versions professionnelles disposent également de versions gratuites. SQLite est également un bon choix pour certaines applications petites ou embarquées.

Résumé

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal