[SQL] Vrijwel onmogelijke syntax-fout

Pagina: 1
Acties:

  • unclero
  • Registratie: Juni 2001
  • Laatst online: 08:59

unclero

MB EQA ftw \o/

Topicstarter
Ik heb hier een Perl-programma geschreven dat via de DBD::mysql module een database aanspreekt. Daar worden dan gegevens uitgevist en via wat keurige hash-functietjes, en halverwege een ontmoeting met een template uit de CMS, naar een keurige webpagina omgezet :).

SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT  T.title,
    T.description,
    ROUND(((P.price / 100) * WS.tax) + P.price,2) AS netto,
    ROUND(P.price,2) AS bruto,
    P.article_nr,
    WI.item_id,
    WP.pic_width,
    WP.pic_height,
    WP.pics_path,
    WP.thumb_path
FROM    titles AS T, products AS P, webshop_items AS WI, webshop_settings AS WS, webshop_pics AS WP
WHERE   T.product_id = P.product_id
AND T.lang_id = 'NL'
AND T.product_id = WI.product_id
AND WI.category_id = 1
AND WP.pics_id = WI.pics_id
ORDER   BY T.description
LIMIT   0, 10;


En dit was het resultaat:
Error: DBD::mysql::st execute failed: You have an error in your SQL syntax near ';
' at line 18

Werkelijk waar, in mijn lange loopbaan als Perl-guru heb ik dit nog nooit, maar dan ook nog nooit meegemaakt. Ik heb het eerst keurig draaiende gehad op mijn Windows2000 dev-n-test machine met Perl-Apache-MySQL. Maar op onze Slakware server blijft ie die error geven, nochtans ik recentelijk (een weekje terug) de meest recente DBD module heb staan installeren daar. Ik had het misschien gewijt aan de oude versies van Apache (1.3.27) en MySQL (3.23) maar dat leek me ook al stug.

Ik heb even geprobeerd om die laatste ';' weg te halen, dat haalde weliswaar de error-melding weg, maar verder dan dat ging het ook niet.

Heeft iemand een idee dat wij over het hoofd gezien kunnen hebben?

Quelle chimère est-ce donc que l'homme? Quelle nouveauté, quel monstre, quel chaos, quel sujet de contradiction, quel prodige!


  • UltimateB
  • Registratie: April 2003
  • Niet online

UltimateB

Pomdiedom

Ik zou persoonlijk even proberen de laatste regel weg te halen. En zo elke regel (die evt weg kan) weghalen, misschien vind je dan wat.

"True skill is when luck becomes a habit"
SWIS


  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 19-05 09:52

thomaske

» » » » » »

unclero schreef op 18 mei 2004 @ 11:56:Ik heb even geprobeerd om die laatste ';' weg te halen, dat haalde weliswaar de error-melding weg, maar verder dan dat ging het ook niet.
Maar, wat gaat er dan precies fout? Wanneer je een query uitvoert vanuit je script hoef/moet je niet afsluiten met een ';'

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 31-03 15:20
Als de fout weg is door het weglaten van de ; levert het wellicht een lege recordset op. Probeer de query eens direct in de mysql client uit te voeren.

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


  • unclero
  • Registratie: Juni 2001
  • Laatst online: 08:59

unclero

MB EQA ftw \o/

Topicstarter
thomaske schreef op 18 mei 2004 @ 12:01:
Maar, wat gaat er dan precies fout?
Nou, hij geeft dan eigenlijk gewoon de error-pagina. Maar het veld van MySQL Error is dan leeg... dat is gewoon de $dbh->errstring; die dan blijkbaar leeg is. Maar toch geeft hij een error omdat de CMS ziet dat er gewoon niets uit de database is gekomen.

Quelle chimère est-ce donc que l'homme? Quelle nouveauté, quel monstre, quel chaos, quel sujet de contradiction, quel prodige!


  • CaptBiele
  • Registratie: Juni 2002
  • Laatst online: 23-05 16:11

CaptBiele

No Worries!

Je begint met de SELECT clausule, en voegt dan steeds een regel toe. Controleer stapsgewijs of je recordset leeg is en of je een foutmelding krijgt....

Dat is het enige wat ik kan toevoegen. Ik zie niet direct een syntax fout of zo...

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

CaptBiele schreef op 18 mei 2004 @ 12:40:
Je begint met de SELECT clausule, en voegt dan steeds een regel toe. Controleer stapsgewijs of je recordset leeg is en of je een foutmelding krijgt....

Dat is het enige wat ik kan toevoegen. Ik zie niet direct een syntax fout of zo...
SQL Server vond de hele query grammaticaal ook perfect afgezien van de LIMIT-clause (ondersteunt ie gewoon niet), dus daar zit het 'm niet in. Ik vermoed eerder dat er elders iets bokt in MySQL zelf met de hoeveelheid joins of de stand van de maan oid...

Professionele website nodig?


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

In php geldt dat je de ; expliciet niet moet toevoegen, het zou me niets verbazen als dat voor alle bindings geldt.
Dat je geen error krijgt, betekent automatisch dat je query syntactisch goed is. Of ie ook semantisch goed is, is wat anders ;)

  • unclero
  • Registratie: Juni 2001
  • Laatst online: 08:59

unclero

MB EQA ftw \o/

Topicstarter
Ik denk dat curry gelijk begint te krijgen, ik heb de qurry eh.. query even op de phpMyAdmin uitgevoerd, en grammaticaal vond hij het uitstekend, alleen kwam er niets terug.

En dat stond in redelijk schril contrast met de MySQL server op mijn machine die al die tijd keurige rijtjes terugketste :).

Quelle chimère est-ce donc que l'homme? Quelle nouveauté, quel monstre, quel chaos, quel sujet de contradiction, quel prodige!


  • unclero
  • Registratie: Juni 2001
  • Laatst online: 08:59

unclero

MB EQA ftw \o/

Topicstarter
Ik ben er eindelijk uit. Het feit dat er niets terugkwam en wel een error had inderdaad te maken met de ';' aan het einde, dat nekte m, op die ouwe MySQL server.
Het feit dat er niets terugkwam zonder error had ermee te maken dat ik de inhoud van de databases niet had 'geleveled' met die op mijn machine :>.

Quelle chimère est-ce donc que l'homme? Quelle nouveauté, quel monstre, quel chaos, quel sujet de contradiction, quel prodige!

Pagina: 1