2010-10-23 6 views
0
$foot = mysql_query("SELECT count(*) 
         FROM tblQA 
         WHERE intResponseID = '' 
         AND cCategory = 'Football' as qcount, 
        (SELECT max(dPostDateTime) 
         FROM tblQA 
         WHERE intResponseID = '' 
         AND cCategory = 'Football') as lastq"); 


$football = mysql_fetch_array($foot); 

echo "<td class='forum'>" . $footbll['qcount'] . "</td>"; 
echo "<td class='forum'>" . $footbll['lastq'] . "</td>"; 

Ceci n'affiche rien dans ma table. Je n'ai pas posté le code HTML entier, j'ai la structure de la table bien.Où est-ce que je vais mal? Requête SQL

+0

'$ football' ou' $ footbll', quelle est l'orthographe correcte? Êtes-vous sûr que votre requête ne génère aucune erreur? – BoltClock

+2

Impossible de dire. Copiez + collez la requête complète, exécutez-la dans l'interface graphique de votre base de données et vérifiez si des résultats apparaissent. –

+0

L'orthographe était mon erreur ici, son correct dans le code ($ football) – BigMike

Répondre

0

Ok, voici ma solution. Je l'ai compris:

$foot = mysql_query("SELECT count(*), max(dPostDateTime) FROM tblQA WHERE intResponseID = '' AND cCategory = 'Football'"); 

$football = mysql_fetch_assoc($foot); 


echo "<td class='forum'><center>" . $football['count(*)'] . "</center></td>"; 
echo "<td class='forum'><center>" . $football['max(dPostDateTime)'] . "</center></td>"; 
+1

C'est exactement ce que OMG Ponies a dit de faire (bien qu'il soit encore meilleur que celui-ci à cause des alias de colonnes). Vous devriez simplement accepter sa réponse plutôt que de créer votre propre réponse, la plupart du temps en double. – joshperry

0

Vous devriez avoir quelque chose comme:

while ($football = mysql_fetch_array($foot)) { 
    echo "<td class='forum'>" . $football['qcount'] . "</td>"; 
    /* yadda yadda yadda */ 
} 

Vous avez eu aussi quelques fautes de frappe dans votre code.

+0

Alors que la boucle brise mon code pour une raison quelconque – BigMike

1

S'il s'agit de votre code littéral, vous avez une faute de frappe dans $footbll.

+0

Pekka, merci. J'ai fait l'erreur dans ce post, pas le code – BigMike

0

Je pense que vous manquez un combinateur où le , se repose: ...qcount, (SELECT...

3

Utilisation:

$foot = mysql_query("SELECT COUNT(*) AS qcount, 
          MAX(dPostDateTime) AS lastq 
         FROM tblQA 
        WHERE intResponseID = '' 
         AND cCategory = 'Football' "); 

$football = mysql_fetch_array($foot); 

echo "<td class='forum'>" . $football['qcount'] . "</td>"; 
echo "<td class='forum'>" . $football['lastq'] . "</td>"; 

Je re-écrit votre requête, il pourrait être fait dans une seule déclaration.

0

La requête n'a aucun sens, je suis extrêmement surpris qu'il renvoie quelque chose dans votre interface graphique DB.

Si vous ne voulez pas changer la syntaxe, vous devez faire quelque chose comme ceci:

SELECT (SELECT COUNT(*) FROM tblQA) AS qcount, (SELECT MAX(dPOstDateTime) FROM tblQA) AS lastq -- i didn't add the conditions 

Mais il peut être facilement fait en faisant cette requête à la place:

SELECT COUNT(*) AS qcount, 
     MAX(dPostDateTime) AS lastq 
FROM tblQA 
WHERE intResponseID = '' 
    AND cCategory = 'Football' 

S'il vous plaît noter également intResponseID semble que c'est un nombre entier, il semble étrange que vous le comparez à une chaîne vide ...

Questions connexes