2011-07-05 5 views
1

J'ai des problèmes avec les données de sélection mysql. J'ai beaucoup d'enregistrements dans ma table mysql appelée ("news") et je ne veux pas appeler les premières données seulement, le premier "id". Comment puis-je faire ceci?MySQL sélectionnez la requête

table = news 
id, title, description, date, image 

c'est ma structure de la table,

$news = mysql_query("SELECT * FROM news ORDER BY id ASC"); 
while ($row = mysql_fetch_array($news)) 
{ echo '<img style="float:left; margin-right:15px;" 
      src="'.$row['image'].'.jpg" />'; 
    echo '<span>'.$row['date'].'</span>'; 
    echo '<h1>'.$row['title'].'</h1>'; 
    echo '<p>'.$row['description'].'</p>'; 
} 

J'appelle toute la date à partir de ce tableau, mais je ne veux pas la seule date de poing pour inclure là-bas!

+3

Il est difficile de dire ce qui est demandé ici. Veuillez publier votre structure de table, des exemples de données et la sortie souhaitée. Aussi, qu'avez-vous déjà essayé? – jensgram

+1

est-ce si difficile de faire des questions compréhensibles pour les nouveaux utilisateurs?XD – dynamic

+0

table = ("news")> id, titre, description, date, image c'est ma structure de table, $ news = mysql_query ("SELECT * FROM nouvelles ORDER BY id ASC"); while ($ row = mysql_fetch_array ($ news)) { \t echo ''; \t echo ''. $ Row ['date']. ' '; \t echo '

'. $ Row ['titre']. '

'; \t echo '

'. $ Row ['description']. '

'; } J'ai donc appelé toutes les dates de cette table, mais je ne veux pas que la seule date à inclure ici! – Mike

Répondre

2

il est difficile de comprendre exactement ce que vous cherchez

Si vous essayez d'obtenir que le premier enregistrement:

mysql_query("SELECT * FROM table ORDER BY id ASC LIMIT 1"); 

Pour obtenir tout, mais la première ligne:

mysql_query("SELECT * FROM table ORDER BY id ASC LIMIT 1,10000"); 
+0

Pas tout, enregistre seulement 2-10001 - si la table est plus grande, les résultats supplémentaires seront sautés. – Tadeck

+0

@Tadeck: @Matthew: En fait, vous avez besoin de «LIMIT 1,10000». Votre requête avec "LIMIT 2,10000" ignorera les ** 2 premiers enregistrements **. –

+0

oh ouais duh, son 03h33 ici lol temps pour sleepy: D – rackemup420

0

Peut-être ceci:

SELECT id FROM news ORDER BY id LIMIT 1 
0

Par cela, vous pouvez obtenir le premier enregistrement.

SELECT * FROM `news` ORDER BY id LIMIT 1,1 
+2

Mauvais. 'LIMIT 1,1' est le même que' LIMIT 1 OFFSET 1' et vous obtiendrez ** second ** enregistrement. – Tadeck

0

Si je vous comprends bien, vous voulez sauter le résultat avec le premier ID:

... Je ne veux pas appeler les premières données uniquement, le premier « id » .

Vous pouvez le faire en disant MySQL vous ne voulez pas ID spécifique:

SELECT * FROM `news` WHERE `id` NOT IN (1); 

(où 1 est l'ID que vous voulez sauter) ou en utilisant la sous-requête:

SELECT * FROM `news` WHERE `id` NOT IN (
    SELECT `id` FROM `news` WHERE ORDER BY `id` ASC LIMIT 1 
); 

et cela devrait fonctionner (cependant, le meilleur moyen est d'obtenir le premier ID séparément et d'entrer dans la requête avant de demander la base de données - vous éviterez ainsi les sous-requêtes).

0

Il existe peut-être des caractères spéciaux dans vos champs de texte. Vous pouvez essayer d'utiliser la fonction htmlentities():

$news = mysql_query("SELECT * FROM news ORDER BY id ASC"); 
while ($row = mysql_fetch_array($news)) 
{ echo '<img style="float:left; margin-right:15px;" 
      src="'. $row['image'] .'.jpg" />'; 
    echo '<span>'. $row['date'] .'</span>'; 
    echo '<h1>'. htmlentities(($row['title']) .'</h1>'; 
    echo '<p>'. htmlentities($row['description']) .'</p>'; 
} 
0

SELECT * FROM newsid PAS ( SELECT id DE news OU ORDER BY id ASC LIMITE 1 );

il supprimera simplement la première ligne du jeu de résultats et vous donnera tous les autres enregistrements