login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Verkeerd gebruik count() ? (Opgelost)

Offline MothZone - 08/04/2007 14:14
Avatar van MothZonePHP ver gevorderde Hallo,
Ik wil in een query het aantal rijen van 4 tabellen tellen (apart, niet opgetelt).
Alleen, nu geeft hij overal 80.
Gebruik ik count() wel goed?

  1. <?php
  2. $query = mysql_query("
  3. SELECT
  4. COUNT(`users`.`id`) as `users`,
  5. COUNT(`reacties`.`id`) as `reacties`,
  6. COUNT(`posts`.`id`) as `posts`,
  7. COUNT(`mappen`.`id`) as `mappen`
  8. FROM
  9. `users`,
  10. `reacties`,
  11. `posts`,
  12. `mappen`");
  13. ?>


Alvast bedankt

11 antwoorden

Gesponsorde links
Offline Rik - 08/04/2007 15:39
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Misschien mag de naam van het totale aantal niet hetzelfde zijn als de naam van de tabel?

Dat zou ik in ieder geval een keer proberen. 
Offline roelh - 08/04/2007 16:52
Avatar van roelh PHP gevorderde Klopt ja, je mag niet dezelfde naam geven
Wat je kunt doen is de naam: countmappen, countposts...blabla
Offline Ultimatum - 08/04/2007 16:55
Avatar van Ultimatum PHP expert zet eens or die(myqsl_error()) achter je query
Offline Ibrahim - 08/04/2007 17:10 (laatste wijziging 08/04/2007 17:10)
Avatar van Ibrahim PHP expert @ultimatum, er is geen fout in de query, hij krijgt alleen een resultaat die hij niet verwachtte 
Offline Ultimatum - 08/04/2007 17:39
Avatar van Ultimatum PHP expert Kan het niet zo zijn dat er wel een fout is en dat het script ook gewoon doorgaat maar doordat die fout er is, het resultaat adners is?
Offline mesynthetix - 08/04/2007 17:52 (laatste wijziging 08/04/2007 17:52)
Avatar van mesynthetix Nieuw lid @ultimatum: Als je geen or die achter de query zet, of er een @ voor zet. Dan wordt de error altijd weergeven. Behalve als je php geen errors laat weergeven.
Offline Grayen - 08/04/2007 17:54
Avatar van Grayen PHP ver gevorderde
  1. <?php
  2. $query = mysql_query("
  3. SELECT
  4. COUNT(users.id) as users,
  5. COUNT(reacties.id) as reacties,
  6. COUNT(posts.id) as posts,
  7. COUNT(mappen.id) as mappen
  8. FROM
  9. users,
  10. reacties,
  11. posts,
  12. mappen");
  13. ?>


Kan het niet zijn dat hij die backtips (of hoe die dingen ook heten) niet zo leuk vind?
Offline Gerard - 08/04/2007 18:04
Avatar van Gerard Ouwe rakker Je zal de COUNT() voor elke tabel in een aparte query moeten uitvoeren.

Wanneer je gebruik maakt van MyISAM dan is het nog wel eens handig om gebruik te maken van SHOW TABLE STATUS. Met InnoDB is dat echter niet mogelijk omdat:
Citaat:
Some storage engines, such as MyISAM, store the exact count. For other storage engines, such as InnoDB, this value is an approximation, and may vary from the actual value by as much as 40 to 50%. In such cases, use SELECT COUNT(*) to obtain an accurate count.
Offline Ultimatum - 08/04/2007 18:05
Avatar van Ultimatum PHP expert
Citaat:
@ultimatum: Als je geen or die achter de query zet, of er een @ voor zet. Dan wordt de error altijd weergeven. Behalve als je php geen errors laat weergeven.


Als je achter een query geen or die zet dan krijg je geen/minder errors te zien..
Offline Gerard - 08/04/2007 18:10
Avatar van Gerard Ouwe rakker Ik wil me toch ook nog even inmengen in het hele @ gebeuren. Het is nooit aangeraden om errors te onderdrukken. Probeer zoveel mogelijk met errorlevel E_ALL te werken (E_STRICT als je het aankunt) en wanneer je een website LIVE zet (online dus), dan zet je de error_reporting uit (0).

Nu klinkt dat misschien gek omdat je dan dus niet 'precies ziet wat er mis is, als er iets mis is', maar dat heeft allemaal met beveiliging te maken. Wanneer jij niets toont wat er mis is gegaan met een bepaalde handeling kan iemand daar ook minder snel misbruik van maken omdat hij dus niet precies weet in welk deel van de code het mis is gegaan.

Probeer dus zonder @ te werken en werk netjes en veilig.
Offline MothZone - 08/04/2007 18:59
Avatar van MothZone PHP ver gevorderde Heb ze in aparte query's gezet en werkt nu wel.
Thx all
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.205s