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
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 165
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 165
    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
    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
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 165
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 165
    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
    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.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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