begin process at 2012 05 27 20:04:50
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de données

 > ESCAPESTRING EN AUTO POUR MYSQL

ESCAPESTRING EN AUTO POUR MYSQL


 Information sur la source

Note :
3,67 / 10 - par 3 personnes
3,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Base de données Classé sous :mysql, parsing, query, sql Niveau :Débutant Date de création :24/12/2005 Vu :3 124

Auteur : FhX

Ecrire un message privé
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

Petite fonction que j'utilise sur ma classe PHP5 : http://www.phpcs.com/code.aspx?ID=33135

Source

  • <?php
  • function query($sql) {
  • if ( !is_string($sql) || empty($sql) ) return false;
  • $num_args = func_num_args();
  • if ( $num_args > 1 ) {
  • for ( $i=1; $i < $num_args; $i++ ) {
  • $var = func_get_arg($i);
  • $var = mysql_real_escape_string($var);
  • $sql = str_replace('{'.$i.'}', $var, $sql);
  • }
  • }
  • return @mysql_query($sql) or die (mysql_error());
  • }
  • // Je récupère 2 variables d'un formulaire par exemple :
  • $var1 = $_POST['var1'];
  • $var2 = $_POST['var2'];
  • // Syntaxe SQL
  • // {1} et {2} représentent les variables pour ma requète
  • $sql = "SELECT x,y,z FROM table WHERE aa = {1} AND bb = {2}";
  • // Traitement SQL
  • $query = query($sql, $var1, $var2);
  • // Suite du code
  • $num = mysql_num_rows($query);
  • echo $num;
  • // etc...
  • ?>
<?php
function query($sql) {

   if ( !is_string($sql) || empty($sql) ) return false;
     
  $num_args = func_num_args();
  
   if ( $num_args > 1 ) {
        for ( $i=1; $i < $num_args; $i++ ) {
		      $var = func_get_arg($i);
		      $var = mysql_real_escape_string($var);
		      $sql = str_replace('{'.$i.'}', $var, $sql);
	}
   }

 return @mysql_query($sql) or die (mysql_error()); 

}

//  Je récupère 2 variables d'un formulaire par exemple :
$var1 = $_POST['var1'];
$var2 = $_POST['var2'];

// Syntaxe SQL 
// {1} et {2} représentent les variables pour ma requète
$sql = "SELECT x,y,z FROM table WHERE aa = {1} AND bb = {2}";

// Traitement SQL
$query = query($sql, $var1, $var2);

// Suite du code
$num = mysql_num_rows($query);
echo $num;
// etc...

?>

 Conclusion

Et voila un petit parsing d'une query avant son envoi à la base SQL.

:)


 Sources du même auteur

PHP5 - UTILISATION DES ITÉRATEURS ET DE LA RÉFLECTION.
PHP 5 - CLASSE MYSQL (STYLE MYSQLI)
[PHP5] CLASSE DATE/HEURE
PHP5 - GESTION DE MODULES EN OBJET
PHP5 - CLASSE DE NEWS ET DE COMMENTAIRES

 Sources de la même categorie

Source avec Zip ORM : DAO, ACTIVERECORD ET DBLIST par Reldan
Source avec une capture CET EXTRAIT PERMET D'AJOUTER DANS UN TABLEAU UNE AGRÉGATION ... par Denis007
EXPORT DE BASE AU FORMAT CSV par remib74
Source avec Zip RECHERCHE DES DOUBLONS DANS UNE TABLE MYSQL EN SÉLECTIONNANT... par aladec2007
[CRON] INSERT ON DUPLICATE KEY UPDATE par pierreSabatier

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture CONVERTIR BASE FIREBIRD EN MYSQL par castelfrederic29
Source avec une capture SQL/EXE EXECUTEUR DE REQUETTES SQL par enokbyreal
Source avec Zip CLASSE SQL par benjycorp
Source avec Zip PORTAGE PDO DE MES ANCIENNES PUBLICATIONS par 8Tnerolf8
Source avec Zip UN PARSEUR DE SQL (LISTER LES CHAMPS PRESENTS, ET PLUS SI AF... par coucou747

Commentaires et avis

Commentaire de coucou747 le 24/12/2005 19:38:05 administrateur CS

salut
jolie fonction, mais tu pourrais utiliser le fait que str_replace peut être utilisé avec des tableaux, tu pourrais gagner quelques milisecondes de temps de calcul...
Bon, je mets 9 à ta jolie fonction ! Pour une fonction de débutant, t'as pas tennu compte du fait que $i était un int, et tu fais un str_replace avec, donc c'est pas parfait, mais t'as une fonction à nombre d'arguments variables, donc, c'est pas mal !

Commentaire de FhX le 24/12/2005 22:38:46

C'est justement la l'utilité de la conversion des types :) Mais c'est vrai, j'aurais dû le préciser.

Par contre, je veux bien utiliser str_replace avec des tableaux, mais ca m'oblige à créer une variable de tableau pour pouvoir contenir chaque variable, donc une petite perte de temps.

Mais jvais essayer une autre solution, je crois me souvenir que func_get_args() renvoit un tableau... jvais voir.

Commentaire de malalam le 26/12/2005 09:44:08 administrateur CS

Là, elle est très bien la petite fonction :-)
Joliment tournée.
Je mets 9 aussi.

Commentaire de coucou747 le 26/12/2005 12:45:15 administrateur CS

je suis pas sur que t'ai une perte de temps en déclarant ton tableau car : pour un nombre d'arguments élevé, tu as pas mal de str_replace qui vont prendre du temps comparé à une déclaration de variable plus un str_replace global...

mais faudrait faire des benchs pour voir à partir de combien d'arguments c'est rentable... (pour un ou deux effectivement, ça doit être de la perte de temps...)

Commentaire de FhX le 26/12/2005 13:02:26

Donc, en pre-test :

if ( $num_args > 1 ) {
    $tab = array();
         for ( $i=1; $i < $num_args; $i++ ) {
          $tab[$i] = func_get_arg($i);
          $tab[$i] = mysql_real_escape_string(tab[$i]);
         }
    $sql = str_replace('{'.$array_keys($tab).'}', $array_values($tab), $sql);
}

Pourquoi pas.

De toute facon, jvais updater un peu plus tard, car je fais un echappement de caractères sur n'importe quel type de variable. J'ai oublié de mettre :
  if ( is_string($var) ) mysql_real_escape_string($var);

Sinon, je fais un echappement sur un nombre... ce qui sert à rien du tout :o

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Retour à la ligne [ par philagui ] Bonjour,je fais afficher tous les resultats d'un champ d'une DB MySQL par l'intermédiaire du script suivant:$sql="SELECT Titre FROM Tableaux WHERE 1"; ## Où est l'erreur ???? bon diou !! [ par kodiask ] voila dite moi pourkoi lorsque je met le code la, il n'y a rien ki saffiche ? (c un système de citation aléatoire)mysql_select_db('cit_tbl',$db); $que sil vou plé où est l'erreur ? [ par kodiask ] voilà g fai un système de citation au hazard et kanje met le code là il maffiche rien du tout , pourkoi ? merci ....mysql_select_db('cit_tbl',$db); $q Erreur dans un script [ par philagui ] Bonjour,est-ce que quelqu'un pourrait me dire où est l'erreur dans ce script:$sql_query="SELECT Titre FROM Tableaux WHERE LIMIT 0,2";//Début de la que Problème de comparaison de date ! [ par punkybreizh ] Bonjour &#224; tous, Depuis quelques jours je bloque sur une de mes pages de mon site qui permet en fait de comparer une date se trouvant dans une ba Avis de bench ! [ par FhX ] Voila, &#224; force de faire tout et n'importe quoi (en ce moment j'ai de l'imagination), je voulais savoir si les pros du bench pouvaient m'aider un syntaxe SQL [ par chapata ] Hello , je me posais une question que peut être pas mal se sont déjà posé , qu'es SQL [ par dudu134 ] Dudu134Bonjour à tous le forum,Voici mon code :$query = mysql_query('SHOW COLUMNS FROM nom_logiciels') or die(mysql_error());while ($row = mysql_fetch probleme d'affichage [ par picasso1er ] &lt;?include('settings/cfg_file.php');include('settings/navigation.php');//CINEMA CATEGORIE$query = $_GET['query'];// on prépare une requête permettan Petite Question Tablaux SQL & Php [ par rocky42 ] Bonjour a tous jaimerait Crée un boutton Qui Surpime la Ligne Mysql "Ligne Du Tablaux"Voila merci pour vos futur reponce&lt;table border="1" cellpaddi


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales