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 code pour passage à php 7


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 73
    Points : 34
    Points
    34
    Par défaut mise à jour code pour passage à php 7
    Bonjour,
    suite à la mise à jour de mon serveur en php 7.2, je dois passer en revue mes scripts pour les adapter au php 7.
    J'ai pu remettre en place la connexion et ainsi lister des éléments de ma base de données.
    Pour l'édition d'un élément, je rencontre des problèmes dans une fonction.
    en bref, j'ai une fonction connexion, une page edit.php qui appel une fonction GET_PRET():
    voici les codes :

    Code : 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
    18
    19
    20
    21
     
    Connexion BD
     
    function connexion_base()
    {
        $db_database = "*****************";
        $db_host = "**********************";
        $db_user = "*********************";
        $db_user_password = "*******************";
     
    	// - AVANT - $server_link = mysql_connect ($db_host,$db_user,$db_user_password) or die (mysql_error());
    	// - AVANT - $db_attempt = mysql_select_db ($db_database, $server_link) or die (mysql_error());
     
    	// modification pour php 7
    	$server_link= mysqli_connect($db_host,$db_user,$db_user_password,$db_database);
     
    	#echo "Connected to database $database OK<br><br>\n";
    	return $server_link;
     
    }
    $server_link=connexion_base();
    Dans scripts :

    dans un fichier sql.inc :

    Code : 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
    function get_pret($id_pret)
    {
    	global $server_link;
    	$sql = "select	id_pret,
    			id_jeu,
    			id_adherent,
    			date_pret,
    			date_retour,
    			rendu,
    			reglera
    		from prets where id_pret=".mysql_real_escape_string($id_pret,$server_link);
    	$req = mysql_query($sql,$server_link);
    	if(sql_count($req))
    		return mysql_fetch_array($req);
    	else
    		return 0;
    }
    Dans un fichier pour editer un prêt, appel de la fonction GET_PRET() :

    Code : 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
    18
    19
    <?php
    	echo "<center>";
    	if (isset($_GET['id_pret']))
    	{
    		$pret = get_pret($_GET['id_pret']);
    		echo "<h3>PRET n°".$pret['id_pret']."</h3>";
    	}
    	else 
    	#Création à vide
    	{
    		$pret = array('id_jeu'=>'',
    			'id_adherent'=>'',
    			'date_pret'=>date("Y-m-d"),
    			'date_retour'=>date("Y-m-d",mktime(0, 0, 0, date("m")+1, date("d"), date("Y"))),
    			'rendu'=>'',
    			'reglera'=>'');
    		echo "<h3>NOUVEAU PRET</h3>";
    	}
    ?>
    Je pense que le problème vient de mysql_real_escape_string dans la fonction GET_PRET(), je ne parviens pas adapter cette fonction pour php 7.
    Merci pour vos lumières.
    Bien à vous
    Nicolas

  2. #2
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    Salut,

    les fonctions mysql sont obsolète tu dois donc soit utiliser pdo ou mysqli.

    mysql_real_escape_string -> https://secure.php.net/manual/en/mys...ape-string.php

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 73
    Points : 34
    Points
    34
    Par défaut corrections
    Bonjour,
    j'ai modifié le code comme ceci :
    Code : 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
    18
     
    function get_pret($id_pret)
    {
    	global $server_link;
    	$sql = "select	id_pret,
    			id_jeu,
    			id_adherent,
    			date_pret,
    			date_retour,
    			rendu,
    			reglera
    		from prets where id_pret=".mysql_real_escape_string($id_pret,$server_link);
    	$req = $server_link->query($sql);
    	if(sqli_count($req))
    		return mysqli_fetch_array($req);
    	else
    		return 0;
    }
    je ne parviens pas à modifier mysql_real_escape_string :-(
    Merci pour votre aide
    Nicolas

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- on te dis que mysql_ est OBSOLETE.

    Il faut donc que tu modifies PARTOUT (et dans toutes les pages) les fonctions mysql_xxx() par mysqli_xxx().


    2- ATTENTION cependant, car la plupart des fonctions mysqli_xxx() (style procédural) nécessitent un PARAMÈTRE supplémentaire ($server_link) (et certaines dans un ordre différent !).
    Donc ici :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqli_real_escape_string ( $server_link , $nom_de_la_variable )



    3- ATTENTION aussi aussi à NE PAS MELANGER "style procédural" et "style orienté objet" !
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	$req = $server_link->query($sql);
    	if(sqli_count($req))
    		return mysqli_fetch_array($req);
    $server_link->query est en "style orienté objet", alors que les autres sont dans le "style procédural".
    Ca ne peut pas marcher.

    4- sqli_count()... C'est sûr, si en plus tu inventes...

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 73
    Points : 34
    Points
    34
    Par défaut comptage
    re,
    Merci pour votre grande patience devant mon ignorance :-)
    j'ai modifié le code de ma fonction et ça fonctionne presque :
    Code : 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
    18
    19
    20
    21
    22
     
    function get_jeu($id_jeu)
    {
    	global $server_link;
    	$sql = "select	id_jeu,
    			nom,
    			reference,
    			fabricant,
    			categorie,
    			commentaire,
    			infos_fabricant,
    			inventaire,
    			date_achat,
    			prix
    		from jeu where id_jeu=".mysqli_real_escape_string($server_link,$id_jeu);
    	$req = $server_link->query($sql);
     
    	//if(mysqli_count($req)) ------------
    		 return mysqli_fetch_array($req); 
    	  //else
    		 //return 0;
    }
    la ligne return mysqli_fetch_array($req); fonctionne seule, si je la remets dans le IF, cela ne marche plus ...
    Je pense que c'est le comptage qui pose problème ?
    Merci ++++
    Nicolas

  6. #6
    Invité
    Invité(e)
    Par défaut
    N'INVENTE pas des fonctions... "au pif".

    Le minimum est que tu te RENSEIGNES sur la SYNTAXE mysqli correcte.
    Dernière modification par Invité ; 13/02/2019 à 10h53.

Discussions similaires

  1. [XL-2016] Mise à jour code pour système 64 bits
    Par familledacp dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/08/2017, 11h03
  2. [MySQL] Mise à jour code PHP d'une ancienne application de supervision réseau.
    Par Developpeuse76 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 09/02/2017, 10h22
  3. [AC-2010] Mise a jour code pour système 64b
    Par idiot dans le forum VBA Access
    Réponses: 1
    Dernier message: 20/02/2013, 12h14
  4. Réponses: 11
    Dernier message: 04/04/2008, 15h09
  5. Mise à jour code
    Par isarian dans le forum C#
    Réponses: 5
    Dernier message: 06/03/2008, 10h28

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