Goedendag,
Ik ben de afgelopen paar dagen beetje meer bezig geweest met OO programmeren in PHP.
Nu heb ik echter een probleempje waar ik niet uit kom.
De code:
Ik include deze code en gebruik de functie waar nodig. Ik geef een mysqli-object als de eerste parameter mee en een string als de tweede parameter.PHP Code:
<?php
function numberOfRowsInTable($mysqli, $table)
{
$query = $mysqli->prepare("SELECT * FROM".$table);
$query->execute();
$query->store_result();
return $query->num_rows();
}
?>
De error:
Ik krijg nu dus deze error (url om de daadwerkelijke url te verbergen.)Fatal error: Call to a member function execute() on a non-object in url/functions/db_num_rows_in_table.php on line 5
Dit snap ik dus niet, want kennelijk ziet de functie $mysqli wel als een mysqli-object (anders zou er een fout zijn met de functie prepare()).
Maar ik snap ook niet hoe er iets fout kan zijn met de execute() functie. Ik zie aan de error dat $query niet gezien word als een mysqli_stmt object, maar waarom niet? Is er iemand die mij mijn (denk)fout uit kan leggen?
Voor de duidelijkheid, ik ben hier niet alleen op zoek naar een oplossing voor dit specifieke geval maar ook naar een uitleg (uiteraard is een oplossing voor dit specifieke geval ook hartelijk welkom :) )
- OO PHP probleempje
-
19-07-2009, 13:24 #1
- Berichten
- 15
- Lid sinds
- 16 Jaar
OO PHP probleempje
-
In de schijnwerper
-
19-07-2009, 14:08 #2
- Berichten
- 2.971
- Lid sinds
- 18 Jaar
De error zegt het al, $query is geen object. De vraag is wat is het dan wel.
Doe eens print_r($query) ervoor zetten en je krijgt in veel gevallen al wel een zinvol antwoord.
-
19-07-2009, 14:44 #3
- Berichten
- 15
- Lid sinds
- 16 Jaar
Het probleem is opgelost :)
Zoals Vincent al zei was $query geen object (zoals ik vermoedde in mijn eerste post).
Heb print_r() gedaan en kreeg er niets uit, toen var_dump() en var_export() maar geprint waaruit bleek dat het een boolean false was.
Aangezien mysqli->prepare() false retourneert bij een error heb ik mysqli->error geprint waaruit bleek dat ik een spatie was vergeten te zetten tussen FROM en de eerste aanhalingstekens.
Het is nu dus opgelost, erg bedankt voor je aanwijzing Vincent :)
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic