datum issue bij update naar PHP 7

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Richard Pietersen

Richard Pietersen

24/11/2018 09:28:35
Quote Anchor link
op mijn website maak ik gebruik van onderstaande code:
$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
 
PHP hulp

PHP hulp

25/04/2024 16:20:23
 
- Ariën  -
Beheerder

- Ariën -

24/11/2018 10:13:05
Quote Anchor link
Lijkt mij sterk. Een Mysql-query is niet afhankelijk van een PHP-versie.

Ik zou eerder foutafhandeling inbouwen op je $resultaat.
 
Richard Pietersen

Richard Pietersen

24/11/2018 10:29:36
Quote Anchor link
Dank Voor je reactie. Ik zal daar nog eens naar kijken
 
Thomas van den Heuvel

Thomas van den Heuvel

24/11/2018 16:43:04
Quote Anchor link
Grote kans dat het maken van een verbinding of het uitvoeren van de query in het eerste geval niet is geslaagd, vooral als je resultaten verwacht. Je controleert ook nergens of beide goed gaan, dus voor nu is het gissen wat er misgaat.

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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.