[MySQL] php mysqli doet een correcte query niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Sando
  • Registratie: Januari 2007
  • Niet online

Sando

Sandoichi

Topicstarter
Ik heb een query waar honderden velden moeten worden upgedate. Maar hij werkt niet. Als ik de gegenereerde query file_put_contents en deze dan in phpMyAdmin plaats, dan gaat de query gewoon goed.

UPDATE hashes h SET hash='[...]' WHERE h.id=1 AND h.update=2 LIMIT 1;
UPDATE hashes h SET hash='[...]' WHERE h.id=2 AND h.update=2 LIMIT 1;
UPDATE hashes h SET hash='[...]' WHERE h.id=3 AND h.update=2 LIMIT 1;
...
UPDATE hashes h SET hash='[...]' WHERE h.id=200 AND h.update=2 LIMIT 1;


Niets mis mee. Maar via $mysqli->query() werkt het niet.
In plaats daarvan moet ik in de loop die deze query opbouwd elke UPDATE apart in de query gooien. Dan werkt het wel.

Door te debuggen kom ik ook nergens achter, en ik krijg ook niet even een nette foutmelding ofzo. Mijn eerste gok is dat een query niet zo lang mag zijn, maar de querylengte ligt volgens google tussen de 64k en de omvang van je vrije geheugen, dus daar zal het niet aan liggen.

Ik merk absoluut geen lag ofzo, maar het klinkt zo slordig om zoveel losse queries te doen wat gewoon in één keer zou moeten kunnen.

Heeft iemand een idee waar ik nog meer aan kan denken?

🇪🇺 Buy from EU (GoT)


Acties:
  • 0 Henk 'm!

  • Avalaxy
  • Registratie: Juni 2006
  • Laatst online: 11:51
Correct me if I'm wrong, maar is het niet gewoon zo dat je met MySQLi slechts 1 query tegelijk uit kunt voeren? Ik meen me te herinneren dat dat bij PDO ook zo was.

Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 06:10
Als ik het goed begrijp doe je als het ware meerdere queries via de standaard query() functie? In dit geval kijk eens naar: PHP: mysqli::multi_query - Manual

Acties:
  • 0 Henk 'm!

  • martijnve
  • Registratie: December 2004
  • Laatst online: 11:54
Avalaxy schreef op maandag 11 juli 2011 @ 00:34:
Correct me if I'm wrong, maar is het niet gewoon zo dat je met MySQLi slechts 1 query tegelijk uit kunt voeren? Ik meen me te herinneren dat dat bij PDO ook zo was.
Bij de oude mysql driver is het iig ook zo.
Als ik je queries zie wil je dit sowieso vanuit een loop doen.

Mini-ITX GamePC: Core i5 3470 | 16GB DDR3 | GTX 970 4GB | Samsung 830 128GB | Dell u2711 (27", IPS,1440p), 2343BW


Acties:
  • 0 Henk 'm!

  • Glashelder
  • Registratie: September 2002
  • Niet online

Glashelder

Anti Android

PV 4915wp op oost, 2680 wp op west, 1900 wp op zuid. pvoutput - AUX 8 kW bi bloc


Acties:
  • 0 Henk 'm!

  • Sando
  • Registratie: Januari 2007
  • Niet online

Sando

Sandoichi

Topicstarter
Avalaxy schreef op maandag 11 juli 2011 @ 00:34:
Correct me if I'm wrong, maar is het niet gewoon zo dat je met MySQLi slechts 1 query tegelijk uit kunt voeren?
Ik dacht dat je statements gewoon bij elkaar kon gooien zodat je maar 1 request naar de MySQL server hoeft te doen in plaats van 100. Eens in een boekje "Leer MySQL in 5 minuten" (oid) gelezen (of verkeerd onthouden). Nu zal dit voor een kleine interface niet uitmaken, maar het is een good practise hier wel rekening mee te houden.

Mijn gedachte werd bevestigd door phpMyAdmin die de query gewoon uitvoerde, maar mischien doet die stiekem truukjes.
Manuel schreef op maandag 11 juli 2011 @ 00:35:
Als ik het goed begrijp doe je als het ware meerdere queries via de standaard query() functie? In dit geval kijk eens naar: PHP: mysqli::multi_query - Manual
Bedankt jongens! Dat is exact wat ik nodig heb. Ben nu wel stiekem aan het twijfelen of die multi-query gewoon een truukje is die intern alsnog 100 aparte queries maakt of niet, maar in ieder geval ben ik er uit. :)

🇪🇺 Buy from EU (GoT)

Pagina: 1