login  Naam:   Wachtwoord: 
Registreer je!
 Forum

insert errors

Offline Stijn - 29/06/2005 20:26 (laatste wijziging 29/06/2005 20:35)
Avatar van StijnPHP expert sorry voor de belachelijk titel maar ik vind de fout niet :'(
  1. <?
  2. $Insert = mysql_query("INSERT INTO love_stories_reacties (storie_id, datum, tijd, bericht, poster) VALUES ('".$id."', 'now()', 'now()', '".$reactie."', '".$_SESSION['username']."'") or die(mysql_error());
  3.  
  4. ?>


dan zegt hij:
Citaat:
You have an error in your SQL syntax near '' at line 1


Wat zou er kunnen fout zijn tabelnaam klopt, $_SESSION heeft waarde,...

groeten stijn 

edit:
woeps, had een ')' vergeten, sorry, vergeef me, sla me niet  

15 antwoorden

Gesponsorde links
Offline BonMarche - 29/06/2005 20:44
Avatar van BonMarche PHP beginner
Citaat:
vergeef me, sla me niet
ik vergeef je niet en ik zou je best willen slaan, maar niet vanwege dat haakje.

Behalve dat je geen or die() moet gebruiken moet je naast de error ook altijd de query printen, dan zie je bijna meteen wat het probleem is (meestal). je moet iig functies niet tussen quotes zetten (now())
Offline smoos - 29/06/2005 20:46 (laatste wijziging 29/06/2005 20:49)
Avatar van smoos PHP gevorderde nu er tog zo'n topic is heb ik er een vraag over:
waarom doe je ingodsnaam dit
'".$id."'
als dit ook kan
'$id'
Offline BonMarche - 29/06/2005 20:56
Avatar van BonMarche PHP beginner
Citaat:
waarom doe je ingodsnaam dit
'".$id."'
als dit ook kan
'$id'
Omdat variabelen niet tussen quotes moeten (je gaat toch ook geen functies tussen quotes zetten ofzo, quotes zijn er alleen voor strings). Geen enkele programmeertaal doet dat, alleen bij php hebben ze hiervoor ondersteuning ingebouwd. Dat is heel jammer en helaas is het in php5 nog steeds niet verbeterd, dus de vragen en problemen die hierdoor veroorzaakt worden zullen wel blijven komen.
Offline smoos - 29/06/2005 20:59
Avatar van smoos PHP gevorderde oke dus ff een voorbeeld:

dit moet ik afleren:
  1. <?php
  2. $insert = "INSERT INTO news (userid,type) VALUES ('$data->id','3')";
  3. ?>


en dit moet ik aanleren:
  1. <?php
  2. $insert = "INSERT INTO news (userid,type) VALUES ('".$data->id."','3')";
  3. ?>

zo doe ik het goed neem ik aan?
Offline Ontani - 29/06/2005 21:00
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
het ging daar niet om BonMarché

het ging erom dat men ' " . $id . " ' gebruikt in plaats van ' $id '
ik doe het ook altijd zo, omdat het voor mij een duidelijker beeld geeft waar uw zin wordt afgebroken en een variabele wordt ingevoegd.
Offline BonMarche - 29/06/2005 21:04
Avatar van BonMarche PHP beginner
Citaat:
zo doe ik het goed neem ik aan?
ja, zo is het goed;-)

@Ontani: daar had ik het toch ook over...
Offline smoos - 29/06/2005 21:06
Avatar van smoos PHP gevorderde @BonMarché
oke thx.

en idd daar had je het over in mijn oge
Offline Rens - 29/06/2005 21:08 (laatste wijziging 29/06/2005 21:09)
Avatar van Rens Gouden medaille

Crew algemeen
Als je het dan toch goed wilt doen, laat getallen dan ook buiten quotes, en omdat iedereen zegt dat MySQL_Fetch_Assoc sneller is dan MySQL_Fetch_Object, gebruik dan meteen MySQL_Fetch_Assoc^^

  1. <?php
  2. $insert = "INSERT INTO news (userid,type) VALUES ('".$data['id']."',3)";
  3. ?>
Offline smoos - 29/06/2005 21:22
Avatar van smoos PHP gevorderde jah idd dat zie ik vele zegge op deze site. oke weer een voorbeeld (nu zal ik het goed leren ook XD)

dit deed ik eerst / vroeger
  1. <?php
  2. $sreply = mysql_query("SELECT * FROM news WHERE id='$newsid' AND type='3'");
  3. $qreply = mysql_fetch_object($sreply);
  4. echo "$qreply->tijd";
  5. ?>

maar dat zou moeten worde:
  1. <?php
  2. $sreply = mysql_query("SELECT * FROM news WHERE id='$newsid' AND type='3'");
  3. $qreply = mysql_fetch_assoc($sreply);
  4. // en dan hoe weergeven?
  5. // zo: ?
  6. echo "$qreply->tijd";
  7. // of, zo: ?
  8. echo "$qreply['tijd'];"
  9. // of anders XD??
  10. ?>
Offline nemesiskoen - 29/06/2005 21:24 (laatste wijziging 29/06/2005 21:24)
Avatar van nemesiskoen Gouden medaille

PHP expert
@smoos: een duidelijker voorbeeld waarom je eig nooit vars binnen quotes moogt zetten:

  1. <?php
  2. echo "ik ga naar de krantenwinkel";
  3. //geen probleem
  4.  
  5. $wat = "kranten";
  6.  
  7. echo "ik ga naar de $watwinkel";
  8. //probleem: variabele $watwinkel is niet geïnitialiseerd en heeft dus de waarde NULL. "ik ga naar de " zal op het scherm komen.
  9. ?>


dit valt op te lossen met {} maar dat is slordig, net als @.
Trouwens, ik dacht dat PHP alleen dubbele quotes rond variabelen ondersteunde.
dus:



  1. <?php
  2. $iets = "halo";
  3.  
  4. echo "$iets"; //halo
  5. echo '$iets'; //$iets
  6. ?>


edit: ZONDER die " in ieder geval.
Offline BonMarche - 29/06/2005 21:25 (laatste wijziging 29/06/2005 21:29)
Avatar van BonMarche PHP beginner dat zou zo moeten worden:

  1. <?php
  2. $sreply = mysql_query("SELECT * FROM news WHERE id=".$newsid." AND type=3");
  3. $qreply = mysql_fetch_assoc($sreply);
  4.  
  5. echo $qreply['tijd'];
  6. ?>


dus:
- variabelen buiten quotes
- getallen buiten quotes (eigenlijk alles behalve strings)
en fetch_assoc geeft een array, dus moet je het niet als object benaderen (met ->)

edit:
@nemesiskoen: idd alleen met dubbele quotes

nog een opmerking over bovenstaand script: gebruik nooit SELECT *, je selecteert dan alle kolommen terwijl je dat meestal niet wilt (als je ze wel echt allemaal nodig hebt mag het natuurlijk wel). Elke extra kolom levert per record weer extra (kilo)bytes op en al die data wordt in het geheugen geladen en maakt het dus langzamer.
Offline smoos - 29/06/2005 21:28 (laatste wijziging 29/06/2005 21:35)
Avatar van smoos PHP gevorderde jah idd over dat laatste geef ik je gelijk maar over dat eerste heb ik de twijvels. ik heb gewoon staan

  1. <?php
  2. echo "welkom terug $data->nick";
  3. ?>

en dat geeft dan bijvoorbeeld de output:
welkom terug smoos

edit: @ nemesiskoen
ajah srry ik zag die spatie over het hoofd. over dat eerste heb je ook gelijk 

edit: @ BonMarché
ik had in dit geval alles nodig. ik begrijp wat je bedoelt en zal ook daarop gaan letten ;)

edit: @ TFOL
srry voor dit "gelul" maar ik wou cker zijn van wat juist scripten is met mysql

edit: @ BonMarché, Ontani, Rensjuh en nemesiskoen
bedankt voor jullie hulp en/of aanwijzingen 
Offline TFOL - 29/06/2005 21:30
Avatar van TFOL PHP beginner nu hebben we wel genoeg gelult.
----------

@Stijn: echo je $insert is en kijk of de waarders allemaal goed zijn
Offline Stijn - 29/06/2005 21:35
Avatar van Stijn PHP expert euh...de query werkt hoor had gewoon ')' vergeten & 'now()' moest now() worden, pft. Misschien zal ik toch niets meer posten hier Anders komt de DB beetje vol zeker admins  . Ik had gewoon al heel de dag PHP codes gezien en ben beetje dronken ervan . This can be closed 
Offline TFOL - 29/06/2005 22:04 (laatste wijziging 29/06/2005 22:04)
Avatar van TFOL PHP beginner door al dat gelul wist ik niet meer of het al was gelukt of niet... veel plezier met je script en query^^ 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.279s