Ik vroeg me af hoe jullie je SQL-query's inspringen, ikzelf weet namelijk niet zeker welke manier ik wil gaan gebruiken, mogelijk brengen jullie mij op een idee.
Dus: Hoe zouden jullie deze query inspringen:
SELECT a.*, DATE(a.datum) AS datum, p.naam, p.prijs FROM aanvragen AS a, producten AS p WHERE a.klantid = ".$iKlantId." AND p.id = a.productid ORDER BY id DESC
En deze query:
INSERT INTO aanvragen (klantid, productid, datum) VALUES ('".$iKlantId."', '".$iProductId."', NOW())
En deze query:
UPDATE aanvragen SET productid = '".$iProductId."', datum = NOW() WHERE id = ".$iAanvraagId." LIMIT 1
En deze query:
DELETE FROM aanvragen WHERE id = ".$iAanvraagId." LIMIT 1
Graag responses!
Ook als je dezelfde 'syntax' gebruikt als een voorgaande poster, graag reageren, dan weet ik welke het meest / vaak gebruikt wordt ;)
PS. Liever geen responses over SQL Injection en slimmere manieren om data op te halen, deze queries gebruik ik niet echt, ze zijn alleen voor jullie om in te springen ;)
SELECT
a.*,
DATE(a.datum) AS datum,
p.naam,
p.prijs
FROM
aanvragen AS a,
producten AS p
WHERE
a.klantid = ".$aKlant['id']."
AND
p.id = a.productid
ORDER BY
id DESC
==
INSERT INTO aanvragen
(
klantid,
productid,
datum
)
VALUES
(
'".$iKlantId."',
'".$iProductId."',
NOW()
)
==
UPDATE
aanvragen
SET
productid = '".$iProductId."',
datum = NOW()
WHERE
id = ".$iAanvraagId."
LIMIT 1
==
DELETE FROM
aanvragen
WHERE
id = ".$iAanvraagId."
LIMIT 1
Je doet overal eerst de 'opdracht' ('ORDER BY' bijvoorbeeld) dan een enter en een tab, en dan de 'waarde' ('id DESC' bijvoorbeeld), behalve bij LIMIT, heeft dit nog een reden, buiten het feit dat de 'waarde' van LIMIT bijna altijd heel klein is?
En je doet SELECT [enter, tab] wat-te-selecteren en ook zo bij UPDATE en DELETE, maar niet bij INSERT, why?
ASC en DESC zijn imo meer 'toevoegingen' aan de waarde, net als het AS-gedeelte bij
aanvragen AS a
LIMIT is imo een echte 'opdracht', met een waarde die niet eens altijd zo kort is, je kunt natuurlijk 'LIMIT 10' doen, maar ook 'LIMIT 10, 20'
Ik vind Blanches 'syntax' overigens zeer overzichtelijk/handig/whatever, dus ik denk dat ik die ook ga gebruiken, met de uitzondering dat ik wel een entertje bij LIMIT ga neerzetten. En ik weet ook nog niet wat ik ga doen aangaande mijn tweede vraagje aan Joren.
Maar persoonlijk vind ik het overzichtelijker als de bij elkaar horende haakjes ook onder elkaar staan...
Bij de LIMIT zet ik de waarde er wel direct achter, puur en alleen om de lengte van die waarde, die altijd kort is. Verder gebruik ik nooit de syntax '10, 20' maar geef ik altijd netjes een offset aan. Vergelijk:
LIMIT 20
OFFSET 10
En:
LIMIT
20
OFFSET
10
Dan vind ik de eerste opbouw duidelijker, vooral als je dit in een lange query opneemt. Een nieuwe regel voor 10 en 20 is dan een beetje teveel van het goede.
ps. Het komt er dus uiteindelijk op neer dat je een syntax kiest die jezelf pretting vindt werken en dat je je vervolgens consequent aan die syntax houdt. Uiteraard kies je wel een syntax die ook redelijk leesbaar is voor andere programmeurs ;-)
Ja dat is waar, maar zoals je op het einde zegt gaat het me niet alleen om wat ik zelf fijn vind, maar ook om wat fijn is voor anderen. :)
De INSERT zoals jij hem gebruikt ga ik denk ik ook doen.
En LIMIT heb je ook gelijk in, ik kende OFFSET niet eens, dus die ga ik los van LIMIT gebruiken, en niet samen achter LIMIT.
Nou dankjewel allemaal, Joren dus, en eigenlijk mag hier een lockje op, ik weet genoeg ;)