login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Sql error, maar waar zit de fout? (Opgelost)

Offline shonda - 30/12/2011 23:29
Avatar van shondaLid Ik heb een klein probleem met mijn query die uit een andere tabel de afbeeldingen zou moeten halen.
Ik heb dit systeem niet zelf geschreven, ben alleen wat aanpassingen aan het verrichten.
Echter krijg ik een nare SQL error waarvan ik het probleem niet kan vinden!

Heeft iemand en idee wat hier mis gaat?

  1. $sql = "SELECT * FROM fietsen WHERE verkocht=0 ORDER BY date_added DESC LIMIT 3";
  2. $res = mysql_query($sql) or die(mysql_error());
  3.  
  4. echo '<p>Zes nieuwste fietsen:</p>
  5.  
  6. <table border="0"><tr>';
  7. while($row = mysql_fetch_assoc($res)) {
  8. $qry = mysql_query("SELECT * FROM fietsen_plaatjes WHERE fietsen_idFietsen = '".$row['idFietsen']."' LIMIT 0,1");
  9. $resa = mysql_query($qry) or die(mysql_error());
  10. $rowb = mysql_fetch_assoc($resa);
  11. echo '<td style="border-left: 1px solid #000; width: 320px;">'.$row['merk'].' - '.$row['type'].'<br />'.$row['beschrijving'].'<br /> &euro; '.$row['prijs'].'<br /><img src="'.$rowb['file'].'" width="200" height="150" /></td>';
  12. }
  13. echo '</tr>';


De error is:
Citaat:
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 'Resource id #7' at line 1


Alvast bedankt!

6 antwoorden

Gesponsorde links
Offline Stijn - 30/12/2011 23:45
Avatar van Stijn PHP expert Die LIMIT 0,1 mag eraf. Als dit een primary key (of index) is, zal dit altijd 1 resultaat opleveren. Ik zou voor 1 record de functie PHP.net: mysql_result gebruiken. Met fetch_assoc functie krijg je altijd een 2D array terug. Dus je zal $rowb[0]['kolom] moeten typen.

Een handig debug tip: voer je query eens uit in phpmyadmin of in je database software. Die gaan meestal nog meer details geven.

Wel grappig dat je in je eerste query LIMIT 3 aangeeft en dan in je titel Zes nieuwste fietsen .
Offline shonda - 30/12/2011 23:56
Avatar van shonda Lid Hartstikke bedankt Stijn voor het snelle antwoord!

Ik had al het een en ander getest door de LIMIT weg te laten, en het directe ID nummer in te voeren maar het mocht maar niet werken.

Direct in pMA werkte het wel! de row idFietsen heb ik even in een echo gezet en die werkt gewoon.

Dus dan zal er wel iets mis moeten zijn in mijn code.. maar waar, ik heb werkelijk geen idee!

En hartstikke bedankt voor de goede tip!!! 

Ik haal ze op in twee keer, eerst 3 en later weer 3 om met de tabellen goed uit te komen in de html. 
Offline Stijn - 31/12/2011 00:09
Avatar van Stijn PHP expert Je kan ook met twee for lusjes werken. Twee queries uitvoeren is lastiger dan een for lusje dat drie keer loopt. Misschien nog een tip. Je ene tabel is gelinkt aan de andere tabel. Het is makkelijker om één query te maken d.m.v. JOINS.

  1. SELECT *
  2. FROM fietsen AS f
  3. INNER JOIN fietsen_plaatjes AS fp ON(f.idFietsen = fp.fietsen_idFietsen)
  4. WHERE f.verkocht=0
  5. ORDER BY f.date_added DESC
  6. LIMIT 6


  1. $fetch = mysql_fetch_assoc($query);
  2. for($i=0 ; $i < 3 ; $i++) {
  3. echo $fetch[$i]['merk'];
  4. }
  5.  
  6. //tweede tabel
  7. for($i=3 ; $i < 6 ; $i++) {
  8. echo $fetch[$i]['merk'];
  9. }
Offline shonda - 31/12/2011 00:24
Avatar van shonda Lid Bedankt voor de hulp! Ik heb het een en ander hiermee geprobeerd, echter kom ik er maar niet uit.
Ik krijg alles behalve resultaten, alleen maar leegte.

Ik begrijp gewoon niet waarom er een error tevoorschijn zou komen, als, naar mijn idee weinig mis kan zijn in de code. Vooral als het direct in de DB geen problemen aanwezig zijn.  
Offline Giant - 31/12/2011 01:27 (laatste wijziging 31/12/2011 01:29)
Avatar van Giant PHP beginner Je fout is best simpel! 
  1. $qry = mysql_query("SELECT * FROM fietsen_plaatjes WHERE fietsen_idFietsen = '".$row['idFietsen']."' LIMIT 0,1");
  2. $resa = mysql_query($qry) or die(mysql_error());

Je voert de query uit over de string ($qry). En daarna probeer je hem nogmaals uit te voeren over de resource ($resa)...

  1. $qry = "SELECT * FROM fietsen_plaatjes WHERE fietsen_idFietsen = '".$row['idFietsen']."' LIMIT 0,1";
  2. $resa = mysql_query($qry) or die(mysql_error());

Zo zou die het wel moeten doen.
Offline shonda - 31/12/2011 20:00
Avatar van shonda Lid Omg! Dat ik dat niet heb gezien! Dat word binnenkort weer een nieuwe bril denkt ik dan maar..   

Nee, even zonder dollen. Hartstikke bedankt! Zo simpel dat ik er maar overheen bleef kijken.

@Stijn, dankzij het nu wel werkt, blijf ik toch ook even aan het spelen met jou optie, bedankt!  
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.234s