IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Mise à jour avec mysql_real_escape_string


Sujet :

PHP & Base de données

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 098
    Points : 946
    Points
    946
    Par défaut Mise à jour avec mysql_real_escape_string
    Bonjour à tous,

    Je me replonge dans MySQL et je reprend de l'ancien code qui maintenant est obsolete

    Pour commencer, j'utilisais ce code pour me connecter à ma base de donnée
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
        include($root.'sql/db_config.inc.php');
     
    	$connect = mysql_connect($hote, $user, $password) or die('Erreur de connexion '.mysql_error());
     
    	if(!is_resource($connect))echo 'Echec de la connexion';
    		else mysql_select_db($base,$connect)  or die('Erreur de selection '.mysql_error()); 
    	mysql_set_charset( 'utf8' );
    ?>
    il se trouve que la fonction mysql_connect est obsolete, qui il est vivement conseillé de la changer.
    Alors j'ai remplacer mon code de la manière suivante

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php
        include('sql/db_config.inc.php');
     
    	$connect = mysqli_connect($hote,$user,$password,$base) or die('Erreur de connexion '.mysql_error());
     
    	// Check connection
    	if (mysqli_connect_errno())
      	{
      		echo "Failed to connect to MySQL: " . mysqli_connect_error();
      	}
     
    ?>
    ce qui est embetant c'est que ca implique d'autre problème.
    Par exemple, ej siavais mes entrée de la sorte:
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    mysql_real_escape_string("", $connect),
    mysql_real_escape_string(htmlentities($app_id,ENT_COMPAT,'UTF-8'), $connect),

    la variable connect vient de la connection.

    Si je comprends bien le message d'erreur

    Warning: mysql_real_escape_string() expects parameter 2 to be resource, object given in /home/clients/ee3f943e731fc0a12d3400116692186f/web/measures/measures.php on line 149
    Mon deuxième paramètre n'est plus du bon type.

    Mais alors comment, je peux remplacer ma function
    mysql_real_escape_string()

    Voilà mon code
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    $query = sprintf("INSERT INTO tb_sensors (									  
    		sensor_id,
    		app_id, 
    		dev_id,
    		hardware_serial							  
     
    		)VALUES	('%s',%s','%s','%s')",
     
    		mysql_real_escape_string("", $connect),
    		mysql_real_escape_string(htmlentities($app_id,ENT_COMPAT,'UTF-8'), $connect),	
    		mysql_real_escape_string(htmlentities($dev_id,ENT_COMPAT,'UTF-8'), $connect),		
    		mysql_real_escape_string(htmlentities($hardware_serial,ENT_COMPAT,'UTF-8'), $connect)								//modified by
    );
     
    $sensor_id = mysql_insert_id();
    mysql_query($query,$connect) or die('Erreur SQL !'.$connect.'<br>'.mysql_error());

    Merci pour vos lumières

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Toutes les fonctions mysql_ sont obsolètes, mysql_real_escape_string aussi.
    http://php.net/manual/fr/mysqli.real-escape-string.php

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 098
    Points : 946
    Points
    946
    Par défaut
    Merci!

    Il faut alors que je modifie tout

    J'i donc corrigé de la sorte
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    $app_id = $connect->real_escape_string(htmlentities($app_id,ENT_COMPAT,'UTF-8'));	
    $dev_id = $connect->real_escape_string(htmlentities($dev_id,ENT_COMPAT,'UTF-8'));		
    $hardware_serial = $connect->real_escape_string(htmlentities($hardware_serial,ENT_COMPAT,'UTF-8'));
     
    if (!$connect->query("INSERT into sensors (
    		sensor_id,
    		app_id, 
    		dev_id,
    		hardware_serial	
    	) VALUES ('','".$app_id."','".$dev_id."','".$hardware_serial."')") )
    {
     
        printf("Erreur : %s\n", $connect->sqlstate);
    }
    Evidemment, ca ne marche pas très bien. Ce qui me déranche c'est ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("Erreur : %s\n", $connect->sqlstate);
    qui m'affiche ceci:
    Erreur : 42S22
    C'est pas possible d'avoir un message plus parlant qui m'indique le genre d'erreur?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si avec la méthode "error"
    http://php.net/manual/fr/mysqli.error.php

    Au passage tes htmlspecialchars n'ont rien à faire dans une insertion dans une base de données. Surtout pour des numéros de série et des ids.

Discussions similaires

  1. TIBDataSet comment faire de la mise à jour avec jointure
    Par uluru dans le forum Connexion aux bases de données
    Réponses: 8
    Dernier message: 08/07/2006, 10h09
  2. Mise à jour avec les datasetproviders
    Par kafui dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/06/2006, 14h25
  3. Réponses: 3
    Dernier message: 22/12/2005, 17h47
  4. Mise à jour avec jointure
    Par taupain dans le forum Bases de données
    Réponses: 5
    Dernier message: 09/07/2004, 11h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo