Ding ding ding!
Bij het verbinden met MySQL gebruikt PHP graag gebufferde zoekopdrachten . Dit geldt ongeacht de methode die u gebruikt om verbinding te maken. Bij gebruik van gebufferde query's wordt de volledige resultatenset onmiddellijk opgehaald in plaats van te worden opgehaald wanneer u daarom vraagt. Dit is meestal goed voor de prestaties, omdat er minder retourvluchten zijn.
Maar zoals alles in PHP, is er een probleem. Zoals vermeld op de bufferpagina:
Je gebruikt PHP 5.3, wat betekent dat de kans groot is dat je mysqlnd gebruikt.
U kunt gebufferde zoekopdrachten hier uitschakelen. Het is in elke PHP-interface anders gedaan dan MySQL:
- Voor PDO moet je de
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY
instellen toeschrijven aanfalse
. - Voor mysqli moet u de
MYSQLI_USE_RESULT
doorgeven constant naar dequery
methode. - Voor mysql moet je
mysql_unbuffered_query
aanroepen in plaats vanmysql_query
.
Volledige details en voorbeelden staan op de pagina.
Grote, niet-gebufferde query-fout!
Je moet Sluit de instructiehandle correct en maak de resultatenset vrij voordat u een nieuwe vraag stelt:
- In PDO betekent dit het aanroepen van
closeCursor
op het instructiehandvat. - In mysqli betekent dit het aanroepen van
free_result
op de instructiehandle offree
op de resultaathandle, afhankelijk van waarmee u werkt. - In mysql betekent dit het aanroepen van
mysql_free_result
Als u dit niet doet, resulteert dit in een fout.