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

Langage PHP Discussion :

Fonction each obsolète [PHP 7]


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Homme Profil pro
    Benevole
    Inscrit en
    mai 2004
    Messages
    1 569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : mai 2004
    Messages : 1 569
    Points : 861
    Points
    861
    Par défaut Fonction each obsolète
    Bonsoir à tous

    Voici le code suivant qui est une partie d'un code qui permet de migrer une base vers une autre :

    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
    18
    19
    20
    21
    22
     
    //Construction de la requête d'insertion des données
    		foreach ($data as $row) { //chaque ligne de table
    			$req_insert = "INSERT INTO `" . trim($table['RDB$RELATION_NAME']) . "` SET ";
    			$first = true;
    			$key = key($row);
    			$val = current($row);
    			reset($row);
    			while(list ($key, $val) = each ($row))	//chaque champ
    			{
    				if (!$first) {
    					$req_insert .= " , ";
    				}
    				$first = false;//c'est plus le 1er champ
    				//Correction des valeurs texte
    				$val = str_replace("'","\'",$val);
    				//$val = utf8_decode($val);
    				$req_insert .= "`" . $key . "`='" . addslashes($val) . "'";
    			}
    			//insert LA ligne dans MySQL
    			$bdd_mysql->exec($req_insert);
    		}

    Ce code marchait jusqu'à ce que je passe mon php en version 7.3..., du coup j'ai une erreur sur le code en rouge !

    Deprecated: The each() function is deprecated. This message will be suppressed on further calls in....
    Si quelqu'un peut bien m'aider !

    Merci à tous

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    juin 2003
    Messages
    7 971
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2003
    Messages : 7 971
    Points : 12 421
    Points
    12 421
    Par défaut
    vous pouvez remplacer cela par une boucle "foreach"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    foreach ($row as $key => $val) {
    ...

  3. #3
    Membre éclairé
    Homme Profil pro
    Benevole
    Inscrit en
    mai 2004
    Messages
    1 569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : mai 2004
    Messages : 1 569
    Points : 861
    Points
    861
    Par défaut
    Ok je modifie le code et je vous reviens !
    Merci

  4. #4
    Membre éclairé
    Homme Profil pro
    Benevole
    Inscrit en
    mai 2004
    Messages
    1 569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : mai 2004
    Messages : 1 569
    Points : 861
    Points
    861
    Par défaut
    Bonjour à tous

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    foreach ($row as $key => $val)
     
    			{
    				if (!$first) {
    					$req_insert .= " , ";
    				}
    				$first = false;//c'est plus le 1er champ
    				//Correction des valeurs texte
    				$val = str_replace("'","\'",$val);
    				//$val = utf8_decode($val);
    				$req_insert .= "`" . $key . "`='" . addslashes($val) . "'";
    			}

    Ca marche correctement merci !

  5. #5
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    juin 2003
    Messages
    7 971
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2003
    Messages : 7 971
    Points : 12 421
    Points
    12 421
    Par défaut
    je voulais aussi vous rajouter un conseil. dans votre requête vous utilisez "addslashes" pour protéger contre l'injection SQL mais il vaut mieux utiliser des requêtes préparées pour cela :
    https://www.php.net/manual/fr/mysqli...statements.php

    dans votre cas, vous faites du transfert de données donc vous n'avez pas besoin de cette protection mais pensez-y la prochaine fois que vous ferez des requêtes.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec une fonction
    Par mademoizel dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 24/06/2006, 10h51
  2. problème avec une fonction javaScript
    Par volthur dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/05/2006, 18h04
  3. Problème avec une fonction utilisateur !
    Par nalou dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/04/2006, 17h06
  4. Problème avec une fonction et un array
    Par Neal Morse dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/08/2005, 12h04
  5. Problème avec une fonction date.
    Par kmayoyota dans le forum ASP
    Réponses: 8
    Dernier message: 09/09/2004, 12h33

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