7
votes

Exclure certaines colonnes à partir des colonnes d'affichage MySQL

J'ai cette requête: Afficher les colonnes de Mash CODE> qui fonctionne bien dans ma boucle tandis que la boucle de construction d'un élément de sélection fabriqué à partir de noms de colonne de table. Mais dans ma table, j'ai "ID" et "Tstamp" que je ne veux pas dans l'élément Select, est-ce possible pour exclure ces colonnes?

echo "<form action='".$_SERVER['PHP_SELF']."' method='get'>";
            connectDB();
            $result = mysql_query("SHOW COLUMNS FROM mash") or die(mysql_error());
            echo '<select name="column" class="column">';
            while ($row = mysql_fetch_array($result)) {
                echo "<option value='".$row[0]."'>".ucwords($row[0])."</option>";
            }
            closeConn();
            echo '</select>';
echo "</form>";


0 commentaires

4 Réponses :


3
votes

Oui, c'est possible. Au lieu d'utiliser Afficher les colonnes CODE> Utilisez Informations_schema code> .

Information_schema code> est la manière ANSI d'extraire des métadonnées à partir d'une base de données relationnelle. Dans MySQL, vous pouvez utiliser: P>

$sql = "select column_name from information_schema.columns c " + 
       " where c.table_schema = 'db_name' " + 
       "   and c.table_name='table_name' " + 
       "   and c.column_name like 'name%'";


0 commentaires

14
votes

PHP Way:

Utilisez un Continuer dans la boucle tandis que Ces champs sont récupérés, comme celui-ci: xxx

Ceci va simplement ignorer le ID et ttstamp champs et traiter tous les autres . Continuer est utilisé dans les structures de boucle pour ignorer le reste de l'itération de la boucle en cours et poursuivre l'exécution à l'évaluation de la condition, puis le début de la prochaine itération.


MySQL Way:

Supprimez ces champs de la requête comme ceci: xxx


3 commentaires

@ Benhowdle89: uk.php.net/manual/fr/control-tructures .Continue.php - Il saute le reste de l'itération actuelle de la boucle (dans ce cas, cela irait à ($ rangée ...)). Le manuel fin a des informations utiles, la plupart du temps.


@ Benhowdle89, j'ai modifié la réponse pour montrer ce que continuer.


Merci Shamittomar, réponse très détaillée, je supporterai "continuer" à l'esprit pour l'avenir!



2
votes

Vous pouvez utiliser comme opérateur.

SHOW COLUMNS FROM mash LIKE "name%"


0 commentaires

0
votes

Pour voir juste la colonne "Collyvation" qui apparaît dans Afficher les colonnes complètes de Tablename Code> pour un seul champ, c'est:

select * from information_schema.columns 
where TABLE_SCHEMA = 'tableschemaname' and TABLE_NAME = 'tablename' and COLUMN_NAME = 'fieldname';


0 commentaires