Vraag & Antwoord

Webprogrammeren & scripting

Mysql (sql): geen records gevonden -> wat voor resultaat?

8 antwoorden
  • Hallo Om een gegevens uit een database te halen gebruik ik wat sql, mijn database servertje draait op mysql via apache en php. Het gaat om een kalender. Mijn php-script maakt automatisch van de huidige maand een kalender met verschillende evenementen erop. In de database heb wanneer er iets te beleven is een record opgenomen met de datum en een korte omschrijving van de gebeurtenis. Om de gegevens in de pagina te krijgen gebruik ik een for-lus die voor elke dag van de maand na gaat of er iets te beleven is. Voor sommige dagen staat niets in de database. Als er niets in de database staat voor een bepaalde dag krijg ik een mysql foutmelding dat $resultaat geen geldig mysql resultaat is. Ik gebruik het volgende sql: [code:1:3350390a07] $sql = "SELECT evenement FROM kalender WHERE datum='$datum'"; $resultaat = mysql_query ($sql); $record = mysql_fetch_object($resultaat); // deze laatste regel geeft de foutmelding als er geen records gevonden zijn [/code:1:3350390a07] Mijn vraag is dus hoe ik kan controleren of er wel of geen resultaat is, mysql_num_rows() geeft ook een foutmelding Alvast bedankt Rob
  • Dan vraag ik me toch af hoe je die mysql_num_rows percies aangeroepen hebt... In principe moet: [code:1:aa690b2864] if(mysql_num_rows($resultaat) > 0) { ... } else echo "Niks gevonden."; [/code:1:aa690b2864] gewoon werken...
  • [quote:24c96b7f57="Rob van Esch"][..] Om de gegevens in de pagina te krijgen gebruik ik een for-lus die voor elke dag van de maand na gaat of er iets te beleven is. [..][/quote:24c96b7f57]Als dit betekend dat je voor elke dag van de maand een query afvuurt op de database dan lijkt me dat je dat beter op een andere (efficientere) manier aan kan pakken. Als ik het fout interpreteer dan heb ik niets gezegd ;)
  • Ik heb het al opgelost, had de anonieme user verwijderd uit mysql en even vergeten dat ik dat ik dan natuurlijk wel als user aan moet melden, om een database te bekijken. [quote:1286202606] Als dit betekend dat je voor elke dag van de maand een query afvuurt op de database dan lijkt me dat je dat beter op een andere (efficientere) manier aan kan pakken. [/quote:1286202606] klopt inderdaad, ik ben nu mn database server aan het testen :wink: maar ik had zelf ook al bedacht dat dat niet de juiste manier was. Ik heb al zitten denken dat ik op een of andere manier de maand uit de datum in de tabel zou moeten kunnen halen, dan kan ik 1 query maken die alles voor 1 maand uit de database haalt. En dat resultaat zou ik dan moeten doorlopen. zoiets als [code:1:1286202606] select * from kalender where datum=****-$maand-**; //maar mag dit :) //... en hieronder verwerking van het resultaat [/code:1:1286202606] Kan ik ook het resultaat geheel doorlopen, want met mysql_fetch_object haal ik steeds maar 1 record uit het resultaat van de query. En dat zou ik dan dus voor alle records 30 keer moeten doen, schiet niet echt op alvast bedankt Rob [/quote]
  • Je moet eens in de docs van MySQL kijken naar "BETWEEN"...
  • tnx doe ik :lol:
  • [quote:8090c4cccd="Rob van Esch"] [code:1:8090c4cccd] select * from kalender where datum=****-$maand-**; //maar mag dit :) <= Nee ;) //... en hieronder verwerking van het resultaat [/code:1:8090c4cccd][/quote:8090c4cccd]Je kan wellicht ook iets doen als [code:1:8090c4cccd] select * from kalender where datum LIKE '%-$maand-%'; // dit mag :) //... en hieronder verwerking van het resultaat[/code:1:8090c4cccd]Hopelijk heb je hier wat aan... - Basje.
  • [quote:c823fdeead="BasHamar"][..] Hopelijk heb je hier wat aan... [/quote:c823fdeead] Let daarbij wel op dat je met deze methode (LIKE '%xx%') geen gebruik maakt van eventuele indices en dus altijd een full table scan zal uitvoeren.

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.