Un petit bout de code MySQL probablement sans intérêt pour la plupart d’entre-vous pour commencer l’année : comment trouvez des colonnes ayant comme nom un mot spécifique. SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE ‘%votremot%’ AND TABLE_SCHEMA=’nomdelabasededonnees’ L’intérêt de cette requête ? Vous permettre de trouver facilement des colonnes spécifiques sur les tables d’une base de données dont vous ne connaissez pas l’architecture. En général, les noms des colonnes comportent des mots clés, cette requête vous évite donc de vous farcir les tables d’une base de données une par une pour trouvez celle que vous recherchez. Particulièrement utile pour [...]
Besoin de connaitre les doublons présents sur une table sql ? Rien de plus simple, cette requête fera l’affaire : SELECT field, count(*) FROM table GROUP BY field HAVING count(*) > 1 Pour le dédoublonnage à proprement parler vous devrez passer par une table temporaire (ou sinon il ne serait possible que ne supprimer que tous les enregistrements en double), quelque chose de ce type fera l’affaire : DELETE FROM table t1 WHERE EXISTS (SELECT * FROM table t2 WHERE t1.field = t2.field GROUP BY field HAVING COUNT(*) > 1) Pensez à sauvegarder votre base de données avant, c’est plus [...]
N’ayant rien de spécial à publier cette semaine, j’ai décidé de vous présenter un petit script de mise en cache de vos pages internet. Avant de commencer, la mise en cache c’est quoi ? Grosso modo la création d’une page html statique à partir d’une page dynamique, mise à jour à intervalles réguliers. Le but est bien évidemment d’économiser des requêtes SQL, ressources PHP, etc. et d’accélérer la vitesse de chargement de votre site. En bonus, vu que l’affichage est statique, vous limitez par la même occasion les problèmes inhérents aux injections et autres réjouissances. C’est une technique extrêmement efficace, [...]
Dans la série des requêtes MySQL pour s’avérer utiles, voici comment trouver le 1er ID manquant d’une table : SELECT table.id +1 FROM table WHERE ( table.id +1 ) NOT IN ( SELECT table.id FROM table ) ORDER BY id LIMIT 1 Rien de plus à ajouter, modifiez la limite pour obtenir plus de résultats.

Parce que l’optimisation est une nécessité, un code propre gage qualité, il faut tracker la moindre erreur possible sur son site internet. Aujourd’hui, petit snippet PHP pour vous aider à enregistrer les erreurs SQL générées sur votre site. Rien de bien compliqué au niveau de la mise en place, commencez par créer la table qui va logger les erreurs : CREATE TABLE IF NOT EXISTS `sql_errors` ( `sql_id` int(5) NOT NULL auto_increment, `sql_erno` int(6) NOT NULL, `sql_msg` text character set latin1 collate latin1_general_ci NOT NULL, `sql_time` datetime NOT NULL, `sql_query` text character set utf8 collate utf8_unicode_ci NOT NULL, PRIMARY KEY [...]
Voilà sans doute l’une des questions à laquelle j’ai le plus répondu en ce qui concerne les astuces MySQL. Étant donné qu’il n’y pas grand chose à se mettre sous le dent en terme d’actu Internet ou de trouvailles en ce moment (et que je dois faire un minimum vivre ce blog :p), voici cette fameuse équivalence du CTRL+F en boucle avec MySQL (façon la plus simple et logique de procéder) : UPDATE table SET champ = replace(champ, ‘é’, ‘é’) Rien de bien sorcier donc, tout cela est simplissime mais en même temps bien pratique. ‘table’ doit bien entendu être [...]
Petit rappel : les Magic_Quotes est une fonctionnalité de PHP destinée à protéger automatiquement les données utilisées dans un script PHP part un backslash (« \ »), principalement afin d’éviter les injection SQL. Même si l’idée est intéressante pour les débutants, il faut bien reconnaitre que cette fonction est nettement plus problématique qu’autre chose pour la plupart des développeurs. Le problème, c’est que bon nombre de serveurs mutualisés sont configurés avec les Magic Quotes d’activées par défaut, et ce, malgré le fait que cette fonctionnalité soit obsolete depuis PHP 5.3 (et même carrement supprimée depuis PHP 6). Du coup, il faut trouver [...]
Aujourd’hui, je vous propose un billet article 100% maison, dont le but et de vous présenter les éléments clefs à implémenter sur votre site php/mysql pour vous protéger de 99% des attaques recenssées sur les sites web. Loin de moi l’idée de vous présenter le fonctionnement des diverses failles, une documentation à ce sujet existe déjà si vous cherchez bien, l’objectif est avant tout de s’en prémunir. Loin d’être exhaustif ce tutorial s’adresse avant tout aux débutants 1. Protégez vos requêtes SQL Afin d’éviter les injections sql, il est primodial de protéger l’intégralité vos requetes effectuées via mysql_query() de toute [...]
Voici une fonction très simple mais à la fois très utile pour calculer le nombre de requêtes SQL effectuées sur les différentes pages de son site, et ainsi facilement détecter les pages un peu ‘gourmandes’ et les optimiser : function db_query($sql) { global $query_count; $query_count++; return mysql_query($sql); } Incluez simplement la fonction ci-dessus dans un fichier d’include puis remplacez tous vos mysql_query () par des db_query(). Pour afficher les nombre de requêtes effectuées sur une page, il suffit de faire un ‘echo’ de la variable $query_count. Pour aller un peu plus loin et peaufiner le rendu singulier/pluriel selon le résultat, [...]