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 :

Select et Update d'array [PostgreSQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 78
    Points : 37
    Points
    37
    Par défaut Select et Update d'array
    Bonjour à tous,

    Je travaille sur un petit site en php, avec une base de données postgresql. Je me débrouille assez en SQL de manière générale, mais j'ai un peu de mal avec les arrays dans Postgresql.

    Voilà mon problème, je récupère d'abord un array dans ma base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $query = 'SELECT list FROM users WHERE city=\''.$city.'\'';
    $result = pg_query($query) or die('Échec de la requête : ' . pg_last_error());
    $listusers = array();
     
    		while ($row = pg_fetch_array($result)) {
    			$listusers [] = $row[3];	
    		}
    $listusers = pg_array_parse($listusers [0], $asText = true);
    Jusque là tout va bien, ma fonction pg_array_parse me récupère mes valeurs, pour les mettre sous forme d'array lisible par php. C'est là que ça se gâte.

    Je rajoute une valeur dans mon tableau, puis j'essaie de mettre à jour ma base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $listusers[] = $user;
    		$query = 'UPDATE users SET list= ARRAY[\''.$listusers.'\'] WHERE city=\''.$city.'\'';
    		$result = pg_query($query) or die('Échec de la requête : ' . pg_last_error());
    Sauf que là, quand j'interroge ma base, j'ai un "{Array}" dans ma list. J'ai farfouillé un peu, sans trouver ce qui ne va pas. Est-ce que je dois reformuler mon array en une chaine de caractère, pour l'updater dans ma base ? Ou il y a une solution plus simple ?

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Ne serait-ce pas plutôt comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $listusers[] = $user;
    $tab = implode(',',$listeusers);
    		$query = 'UPDATE users SET list = {'.$tab.'}  WHERE city=\''.$city.'\'';
    		$result = pg_query($query) or die('Échec de la requête : ' . pg_last_error());

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 78
    Points : 37
    Points
    37
    Par défaut
    L'utilisation des accolades dans la requête me retourne une erreur :

    Warning: pg_query() [function.pg-query]: Query failed: ERREUR: erreur de syntaxe sur ou près de « { » LINE 1: UPDATE ...
    C'est ce que j'avais fait au départ, mais ça me mettait cette erreur, et je n'arrive pas à trouver comment passer outre ça.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 78
    Points : 37
    Points
    37
    Par défaut
    Je me répond à moi même après plein de tests

    Il suffisait de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = 'UPDATE users SET list = \'{'.$tab.'}\'  WHERE city=\''.$city.'\'';
    les "\'" permettent de régler le problème, et le implode fait exactement ce que je cherchais au départ, merci !

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

Discussions similaires

  1. Grant Select, Insert, Update
    Par lmdpedat dans le forum Outils
    Réponses: 4
    Dernier message: 03/08/2006, 17h42
  2. Grant Select, Insert, Update
    Par lmdpedat dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 03/08/2006, 15h01
  3. Requête et sous requête avec SELECT et UPDATE
    Par Véronique75ca dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 29/06/2006, 21h25
  4. [MySql5]select ... for update
    Par melou dans le forum Requêtes
    Réponses: 1
    Dernier message: 20/04/2006, 11h11
  5. [Verrou] SELECT FOR UPDATE
    Par e1lauren dans le forum PostgreSQL
    Réponses: 10
    Dernier message: 13/10/2005, 17h06

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