datum issue bij update naar PHP 7
$connect = mysqli_connect(.....);
$sql = "SELECT * FROM nieuws WHERE CurDate() <= tot_datum ORDER BY publ_datum DESC";
$resultaat = mysqli_query($connect, $sql);
$aantalRecords = mysqli_num_rows($resultaat);
Als de server draait op PHP 7.2, is $aantalRecords 0, als de server draait op PHP 5.6 is $aantalRecords 2
ik heb het idee dat het te maken heeft met gebruik van CurDate(), maar kan hier niet echt iets over vinden.
Iemand die mij kan helpen??
Gewijzigd op 24/11/2018 09:32:35 door Richard Pietersen
Ik zou eerder foutafhandeling inbouwen op je $resultaat.
Dank Voor je reactie. Ik zal daar nog eens naar kijken
Schakel je toevallig ook van database(-poort) wanneer je van PHP-versie schakelt?
Het zou ook nog kunnen (maar redelijk onwaarschijnlijk) dat in de MySQL-variant die in PHP 7.2 wordt gebruikt de resultsets ongebufferd zijn. Dit houdt in dat de "PHP kant" niet alle records van tevoren inleest in het geheugen, alle resultaten staan dan dus nog aan de "MySQL kant" om opgehaald te worden. In dat geval is het dus ook niet mogelijk om records te tellen, omdat je simpelweg niet weet hoeveel dit er zijn totdat je ze allemaal hebt opgehaald.
Misschien was (en is) deze ongebufferde variant (bij gebruikmaking van een specifieke MySQL-driver?) heel lang de default? Maar zoals je je kunt voorstellen zorgde (en zorgt) dat (nog steeds) voor veel verwarring als je niet bekend bent met het fenomeen "(on)gebufferde result sets". Je gaat er simpelweg vanuit dat PHP op een of andere manier alle resultaten al binnentrekt, of dat num_rows() nogmaals met de database communiceert om records te tellen ofzo. Maar dat is dus niet zo vanzelfsprekend.