Bonjour,

voila, j'ai un problème, je sais pas pourquoi mais je n'arrive pas récupérer les tuples d'une description de table.
Alors j'ai essayé de presque toutes les manières. Etant donné, que je ne connais pas les champs, j'ai besoin de cette fonction.

J'ai essayer un show columns from table, j'ai essayé le DESC, le DESCRIBE et pourtant sur le phpmyadmin, il n'y a aucune problème.
Je rajoute que la query n'est jamais FALSE. Ce qui fait qu'il y a pas d'erreur dans ma requête.

Alors j'aimerais bien savoir où ça coince. Je peux tester avec MYSQLI, mais j'aimerais bien qu'il passe avec PDO d'abord. ET mysql_list_field aussi j'ai essayé.

Voici ma fonction :

$tab = array();
        if ($this->error)
            return FALSE;
        $config = $this->config;
        $connexion = mysql_connect($config->server, $config->login, $config->password);
        $query = mysql_list_fields($config->selected_db, $this->name);
        if ($query === FALSE)
            return FALSE;
        while ($line = mysql_fetch_assoc($query))
            $tab] = $line;
        $this->nb_col = mysql_affected_rows($connexion);
        mysql_close($connexion);
        $this->description = $tab;
// try {
// $connexion = new PDO("mysql:host={$config->server};dbname={$config->selected_db}", 
// $config->login, 
// $config->password);
// $query = $connexion->prepare('SHOW COLUMNS FROM `:table`');
// $query->bindParam(':table', $this->name);
// $query->execute();
// if ($query === FALSE)
// return FALSE;
// $tab = $query->fetchAll(PDO::FETCH_ASSOC);
// }
// catch (PDOException $e)
// {
// $this->error = $e->getMessage();
// }

1 réponse


Je ne sais pas si ton problème est toujours d'actualité mais voici ce que j'ai trouvé.

Perso je n'arrive pas à binder de paramètres avec un "SHOW COLUMNS FROM myTable". Dans un "SELECT" pas de soucis.. Si quelqu'un passe par là et a la solution, je suis preneur :)

<?php 
try {
    $connexion = new PDO("mysql:host=myHost;dbname=myDB", "myLogin", "myPassword"); 

    $query = $connexion->prepare("SHOW COLUMNS FROM myTable");
    $query->execute();

    if ($query === FALSE)
        return FALSE;

    /* == Traitement des données == */

    // On récupère uniquement le champs Field via (PDO::FETCH_COLUMN, 0)
    $liste_champs = $query->fetchAll(PDO::FETCH_COLUMN, 0);

    // Affichage des champs
    foreach ($liste_champs as $champ) {
        echo $champ . "<br />";
    }

}
catch (PDOException $e) {
    $this->error = $e->getMessage();
}
?>