Door
Jordy R
op 29-08-2013 17:13
gewijzigd op 29-08-2013 19:20
5.013 views
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';
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
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
<?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';
?>