hoi allemaal
krijg de hele tijd een falende query ( eerst deed hij het wel) mijn fout afhandeling zegt foute sql syntax
dus heb hem ingevoerd in mijn phpadmin en er staat een , te veel in me query.
nu komt het probleem de query bevat een implode van een variable en ik krijg hem niet veranderd.
heel iritant kom pas net kijken bij php en sql hoop dat iemand me kan helpen

Dit is de melding
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2,1) ORDER BY id ASC' at line 1
SELECT id, name, image, description, price FROM Tblproducts WHERE id IN(,2,1) ORDER BY id ASC

Als ik dit invoer bij phpadmin werkt hij wel
SELECT id, name, image, description, price FROM Tblproducts WHERE id IN(2,1) ORDER BY id ASC

mijn query in mijn script is
$query = 'SELECT id, name, image, description, price FROM Tblproducts WHERE id IN('.implode(',', array_keys($_SESSION['cart'])).') ORDER BY id ASC';

hoop dat iemand me kan helpen

gr jordy

 IN(,2,1)

Zie die eerste komma? Dat gaat fout. Komma weg en het werkt, wat je zelf al wist, dus ik vraag me een beetje af wat nu het doel is van dit topic.

Niet goed gelezen, je had al het punt dat die komma komt door de implode. Wat je kan doen is de string die uit de implode komt te trimmen op komma's:
<?php
trim(',', implode(',', array_keys($_SESSION['cart'])))
?>
oke hoe doe ik dat jou code toevoegen of code veranderen en is het niet vreemd dat hij het eerst wel deed
nog maals ik kom net kijken dus sorry als het een domme vraag is
Kom op.... je ziet de overeenkomst toch wel tussen de implode in jouw query en de trim en implode in mijn code voorbeeld?
ja maar als ik het verander zegt hij
Parse error: syntax error, unexpected ',' in me query

heb nu dit staan
WHERE id IN trim(',', implode(',', array_keys($_SESSION['cart'])).') ORDER BY id ASC';
Nee, dat is een parse error in php; niet in de query.

Als je dubbele quotes gebruikt bij SQL query's, zie je dat allemaal beter.

(Erwin, is dit wat je bedoelt?)

<?php
$sql = "WHERE id IN trim(',',". implode(',', array_keys($_SESSION['cart'])) .") ORDER BY id ASC";
?>
werkt nog niet de trim wordt denk ik niet herkend al functie mijn editor geeft het niet weer als functie snap er de ballen van
Anders zo:

<?php
$sql = "... WHERE id IN (". trim(',', implode(',', array_keys($_SESSION['cart'])) ).") ORDER BY id ASC";
?>

Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'trim(',',,2,1,3,6) ORDER BY id ASC' at line 1
SELECT id, name, image, description, price FROM Tblproducts WHERE id IN trim(',',,2,1,3,6) ORDER BY id ASC


[size=xsmall]Toevoeging op 29/08/2013 18:12:24:[/size]

krijg nu deze
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ORDER BY id ASC' at line 1
SELECT id, name, image, description, price FROM Tblproducts WHERE id IN () ORDER BY id ASC
Kris Peeters op 29/08/2013 17:56:47

(Erwin, is dit wat je bedoelt?)

<?php
$sql = "WHERE id IN trim(',',". implode(',', array_keys($_SESSION['cart'])) .") ORDER BY id ASC";
?>


Uh, trim is nog altijd een php functie, dus nee.

<?php
$query = 'SELECT id, name, image, description, price 
          FROM Tblproducts 
          WHERE id IN('.trim(implode(',', array_keys($_SESSION['cart'])), ',').')
          ORDER BY id ASC'; 
?>

P.S. ik had overigens wel een foutje gemaakt in de trim functie, de karakters waarop getrimd moet worden staan natuurlijk in de tweede parameter...
Moet je jezelf niet afvragen WAAROM die eerste komma er komt?
Heeft $_SESSION['cart'] als eerste waarde niet een lege waarde?
Dus wel een key, maar geen value?

Ik zou het zo doen:
<?php
// verwijder alle lege zooi
array_filter($_SESSION['cart'];

// maak de query. Je code is goed.
$query = 'SELECT id, name, image, description, price  
FROM Tblproducts 
WHERE id IN ('.implode(',', array_keys($_SESSION['cart'])).') 
ORDER BY id ASC'; 
?>

Reageren