login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[PDO] Execute probleem, maar geen error (Opgelost)

Offline Wijnand - 21/08/2013 10:14 (laatste wijziging 21/08/2013 10:16)
Avatar van WijnandModerator Ik heb een probleem in mijn database class. Ik gebruik PDO.

Eerst doet hij de prepare-method en die gaat gewoon goed.

Dan doe ik execute en blijft hij lopen in een oneindige loop.

Zo doe ik de execute:
  1. $this->pdo_executed = $this->pdoStmt->execute($parameters);


Er gebeurd niets raars, het is een simpele: SELECT * FROM accounts WHERE username = ?.

De parameter die ik meegeef

  1. 0 => 'test'
  2. )



En ik krijg dus geen error terug, maar een oneindig-ladenpagina (letterlijk blijft hij doorgaan, hij stopt niet na een paar minuten ofzo).

Iemand enig idee?

[edit]
Goed om te weten, lokaal werkt het wel, maar op de host niet.

25 antwoorden

Gesponsorde links
Offline marten - 21/08/2013 10:47
Avatar van marten Beheerder Ik zou even SQL logging aanzetten. Kijken of hij in een loop komt. We hebben het zelf een x gehad met persistente connecties. Die kan je beter uitlaten in bepaalde situaties. Bij ons liep de server vol met connecties totdat hij zei zoek het uit.
Offline Rens - 21/08/2013 10:48
Avatar van Rens Gouden medaille

Crew algemeen
Hoi Wijnand,

Op PHP.net zie ik bij 'notes het volgende staan:

PHP.net schreef:
5.2.0 The keys from input_parameters must match the ones declared in the SQL. Before PHP 5.2.0 this was silently ignored.

Mogelijk heeft het hier iets mee te maken?

Tevens zie ik volgende comment er bij staan:
  1. <?PHP
  2. //This will not work
  3. $statement->execute($anarray);
  4.  
  5. //Do this to make it work
  6. $statement->execute(array_values($anarray));
Offline Wijnand - 21/08/2013 11:39
Avatar van Wijnand Moderator @Rens, helaas... beide dingen zijn het niet. array_values zorgt ervoor dat de keys weer opgeschoond worden, maar deze zijn goed (net gecontroleerd).

Verder gebruiken wij zowel lokaal als live php 5.3/4.

@Marten, hoe kun je sql logging verder aanzetten?
Offline marten - 21/08/2013 11:47
Avatar van marten Beheerder via mysql server kan je sql query logging aanzetten.
Offline Wijnand - 21/08/2013 11:54
Avatar van Wijnand Moderator Dat wordt lastig.. het is een linux machine en ik probeerde het net, maar ging niet werken... ik vind het stom, vooral omdat het in de test-versie wel werkt (test-server), maar live niet.
Offline marten - 21/08/2013 11:55
Avatar van marten Beheerder Wat zijn de verschillen tussen beide servers?
Offline Wijnand - 21/08/2013 11:57
Avatar van Wijnand Moderator Geen idee eigenlijk.. ik ben geen server-man... behalve windows/linux verschil (test = windows, live = linux).
Offline marten - 21/08/2013 12:03
Avatar van marten Beheerder Je kan 2 php info bestanden gaan vergelijken 
Offline Wijnand - 21/08/2013 12:08
Avatar van Wijnand Moderator Ik zie daar verder niets bijzonders is.. is er iets waarop ik moet letten? :-).
Offline marten - 21/08/2013 13:16
Avatar van marten Beheerder PDO instellingen, juiste ini sets die geladen worden. Paden verschil win <> linux
Offline Wijnand - 21/08/2013 13:38
Avatar van Wijnand Moderator Met padenverschil wordt rekening gehouden, PDO instellingen zijn goed (voor zover ik weet) aangezien ik ergens anders ook PDO gebruik (op zelfde server), ini_sets... goeie vraag, naar welke moet ik kijken :-).
Offline Martijn2008 - 21/08/2013 17:18 (laatste wijziging 21/08/2013 17:28)
Avatar van Martijn2008 PHP beginner Weet je zeker dat het in die execute regel misgaat of voer je nog meer code uit?
Kun je code bewerken op de productie server? Dan kun je namelijk testen of het daadwerkelijk misgaat in de coderegel die je vermoed. Je zou dat kunnen controleren door gebruik te maken van de PHP exit functie. Niet de mooiste methode, maar aangezien ik begrijp dat je geen andere mogelijkheden hebt wel een oplossing. Je verplaatst de exit steeds dieper de code in, zodat je uiteindelijk weet waar je programma precies in de oneindige loop komt en crashed.
Ik heb het zelf ook is een keer gebruikt met succes.

  1. <?php
  2.  
  3. // code, code, code
  4. echo "Hello world!";
  5.  
  6. // Kijken of de code tot hier werkt
  7. echo "-- tot hier werkt de code prima --";
  8.  
  9. ?>
Offline marten - 22/08/2013 07:40
Avatar van marten Beheerder Wijnand, wanneer je in de MySQL console het volgende command uitvoert, krijg je dan een heel hoog aantal (hoger dan het max connections gedefinieerd in de MySQL config?

  1. SHOW processlist
Offline Wijnand - 22/08/2013 09:16
Avatar van Wijnand Moderator @Martijn2008, dat heb ik gedaan, daarom weet ik dat het aan de execute ligt.

@Marten:
| 6229795 | root | localhost | {projectnaam} | Sleep | 299 | | |

Dit is wat ik te zien krijg. Hij blijft echt gewoon vastlopen hierop.
Offline marten - 22/08/2013 09:32
Avatar van marten Beheerder Heb je het al eens via bindParam geprobeert?
Offline lemoinet - 22/08/2013 09:36
Avatar van lemoinet PHP gevorderde het probleem ligt misschien niet zozeer bij mysql maar de je database-klasse.
kan je de code van je klasse eens posten
Offline Wijnand - 22/08/2013 09:55 (laatste wijziging 22/08/2013 10:21)
Avatar van Wijnand Moderator @marten, nog niet... ga ik zo eens proberen.

@lemoinet: https://github.com/mardix/VoodOrm

[edit]
@marten, ik heb het gewijzigd, maar het werkt niet.
Offline marten - 22/08/2013 10:26
Avatar van marten Beheerder Probeer het probleem uit de bestaande omgeving te pakken. dus proberen het probleem te reproduceren in een nieuwe file met zo weinig mogelijk factoren.
Offline Wijnand - 22/08/2013 16:21
Avatar van Wijnand Moderator Als het goed is wordt er vanavond of dit weekend een wijziging gedaan aan de server en dan wordt er gelijk een PHP update gegeven (naar 5.5.2 hoop ik). Dus dan zou het misschien opgelost worden, we gaan het zien.

Bedankt voor de hulp tot zo ver!
Offline marten - 26/08/2013 10:56
Avatar van marten Beheerder Al meer nieuws Wijnand?
Offline Wijnand - 26/08/2013 11:15
Avatar van Wijnand Moderator Nee, helaas nog niet uitgevoerd... zodra ik meer hoor/weet dan laat ik het gelijk weten, ook als het opgelost is hiermee.
Offline marten - 03/09/2013 09:48
Avatar van marten Beheerder Is er al iets meer bekend hierover Wijnand?
Offline Wijnand - 03/09/2013 09:55
Avatar van Wijnand Moderator @Marten, nog niet... het schijnt niet zo gemakkelijk te gaan, dus wordt er een aparte server voor klaargezet.
Offline DenMette - 05/09/2013 12:47
Avatar van DenMette PHP gevorderde Hoe zit het nu met het probleem?
Offline Wijnand - 05/09/2013 12:52
Avatar van Wijnand Moderator Er is een nieuwe server geïnstalleerd en ben nu aan het uploaden en een goede database over aan het zetten :-).
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.235s