2010-12-02 5 views
-3

Cela ne montre pas de questions sans réponsesJ'ai deux tableaux Questions et réponses, je voudrais afficher toutes les questions avec les détails de leurs réponses. Par exemple. 23 (vues) 12 (réponses)

SELECT 
    M.id, M.j_surname, 
    Q.id as qid, Q.qus_view_count, Q.qus_owner, Q.qus_title, Q.qus_description, 
    Q.qus_createddate, 
    COUNT(A.qus_id) as ans_count, 
    A.qus_id FROM jt_questions Q 
LEFT JOIN jt_members M ON M.id = Q.qus_owner 
LEFT JOIN jt_answers A ON Q.id = A.qus_id 
GROUP BY A.qus_id 
ORDER BY Q.qus_createddate DESC 
LIMIT $offset, $recordsPerPage; 
+3

Personne ne se soucie vraiment de PHP. Extrayez la requête et montrez-la en expliquant pourquoi elle ne fait pas ce dont vous avez besoin. –

+0

développez-vous un concurrent de stackoverflow là-bas? Hein? Hein? – martynthewolf

+0

Stackoverflow est roi. Juste un projet communautaire. –

Répondre

2

Essayez GROUP BY Q.id pas GROUP BY A.qus_id

Pour les questions sans réponse A.qus_id auront tous une valeur de NULL

+0

Déjà fait, mais il ne montre pas de questions non répondues. –

+0

Aviez-vous une clause WHERE que vous ne nous avez pas montrée? Cela pourrait avoir converti votre «OUTER JOIN» à un «INNER JOIN» –

+3

Oh et maintenant la question dans la question a complètement changé, rendant ma réponse apparemment insensée. Génial! –

0

$ compensé = "1; drop table jt_answers; -";

EDIT

si ce que vous avez fait dans votre code ressemblait à ceci:

$SQL = "SELECT 
    M.id, M.j_surname, 
    Q.id as qid, Q.qus_view_count, Q.qus_owner, Q.qus_title, Q.qus_description, 
    Q.qus_createddate, 
    COUNT(A.qus_id) as ans_count, 
    A.qus_id FROM jt_questions Q 
LEFT JOIN jt_members M ON M.id = Q.qus_owner 
LEFT JOIN jt_answers A ON Q.id = A.qus_id 
GROUP BY A.qus_id 
ORDER BY Q.qus_createddate DESC 
LIMIT $offset, $recordsPerPage;"; 

Tout ce que je besoin de faire est d'obtenir $ offset pour ressembler à ma première réponse ci-dessus. Cela ferait tomber votre table jt_answers.

Vous pouvez valider ces valeurs, en vérifiant par exemple que $ offset est un entier positif. Mais vous devriez vraiment utiliser la liaison de paramètres de MySQLi à la place. Cela remplacerait les variables avec? et laissez-passer les variables pour que la base de données puisse décider comment les gérer.

http://www.php.net/manual/en/mysqli-stmt.bind-param.php

+0

Serious? raté? Vraiment? –

+0

La sécurité est importante. – DampeS8N

+0

Je voudrais savoir où le risque de sécurité est dans le code. J'apprécie vraiment votre inquiétude. –

Questions connexes