2010-08-12 5 views
-1

Possible Duplicate:
mysql_fetch_array() expects parameter 1 to be resource, boolean given in selectDESC ne fonctionnera pas - "attend le paramètre à 1"

Quand j'essaie donc trier mes sortie DESC, je reçois cette erreur:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in 

Ceci est ma ligne:

$queryForWall = mysql_query("SELECT * FROM users_wall WHERE uID = '$showU[id]' DESC"); 
while($displayWall = mysql_fetch_array($queryForWall)){ 

Comme vous pouvez le voir, j'ai ajouté DESC, mais je continue à recevoir des erreurs.

+1

Tout d'abord, vous devez utiliser ORDER BY yourColumn DESC – Centurion

+1

En outre, ne pas utiliser un chaîne pour une clé de tableau, utilisez '$ showU ['id']'. Et, vous manquez de concaténateurs; vous voulez que vous lisez probablement 'SELECT * FROM users_wall O WH uID uID = '. $ showU [' id '].' ORDER BY users_wall DESC' – Andrew

Répondre

4

DESC par lui-même n'est pas valide.

Vous devez

ORDER BY <some column or expression> DESC 

Plus généralement, vous devez concevoir un moyen de dire quand une requête SQL est erronée.

Peut-être quelque chose comme:

<?PHP 
$result = mysql_query('<some sql query>'); 
if (! $result){ 
    $error = mysql_error(); 
    //do something with $error, like logging it, using it with trigger_error, etc 
} 
while($row = mysql_fetch_array($result)){ 
    // process results normally 
} 
2

Vous avez besoin d'une ORDER BY.

SELECT * FROM users_wall WHERE uID = '$showU[id]' ORDER BY uID DESC 

La requête provoque une erreur qui signifie $ queryForWall == false. C'est pourquoi l'avertissement PHP indique que vous passez une valeur booléenne comme argument (parce que vous l'êtes).

0

Si vous tentez de commander les résultats, vous devez utiliser la clause ORDER BY.

Par exemple:

SELECT * FROM users_wall WHERE ... ORDER BY date_added DESC 

Vérifiez la SELECT syntax complète pour plus d'informations.

0
SELECT * FROM users_wall WHERE uID = '$showU[id]' ORDER BY uID DESC 

Vous devez spécifier la colonne que vous commandez en descendant.

1

Les réponses affichées sont déjà correctes. Cependant, je voulais ajouter une chose de plus. Vous avez reçu votre message d'erreur d'origine parce que votre SQL était mauvais, et mysql_query échouait. Si vous vérifiez la documentation de PHP, vous verrez que mysql_query retourne FALSE en cas d'erreur.

Vous devriez toujours vérifier le résultat d'une requête SQL avant d'essayer de boucler sur votre jeu de résultats, comme ceci:

$queryForWall = mysql_query("SELECT * FROM users_wall WHERE uID = '$showU[id]' ORDER BY uID DESC"); 
if ($queryForWall) { 
    while($displayWall = mysql_fetch_array($queryForWall)){ 
    } 
} 
Questions connexes