Toon posts:

[MySQL] syntax error | the right syntax to use near '''

Pagina: 1
Acties:
  • 57 views sinds 30-01-2008

Verwijderd

Topicstarter
Beste Allemaal,

Ik kom net kijken bij PHP en MySQL en tot nu toe kan ik redelijk het hoofd boven water houden. Echter loop ik nu al een tijdje te klooien. Ik krijg steeds een SQL syntax error.

FOUT: 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 ''' at line 1

Voor een website maak ik een klein beheer menutje. Hiermee kan je berichten plaatsen, foto's uploaden enzovoort. Dit is mij allemaal gelukt met scripts van wat php websites op internet. Nu ik hier een beetje van afwijk krijg ik de bovenstaande error.

Middels een invulformulier wil ik data opslaan in een tabel. Deze tabel, statsrobert, bestaat uit 4 rijen met de volgende eigenschappen:
id, int, 10, auto_increment
deelname, text
overwinning, text
podium, text

Het formulier staat op de pagina statsRobert_aanmaken.php welke bij verzenden wordt doorgestuurd naar statsRobert_toevoegen.php. Op deze laatste pagina staat het onderstaande script.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php

$db=mysql_connect("localhost","-----","-----");

mysql_select_db("-----",$db)

or die ("FOUT: Openen database mislukt");
$result=mysql_query("SELECT * FROM statsrobert", $db);

    if ($_POST['deelname'] == ""){

        echo"Er is geen deelname aantal ingevoerd.";

      }

    elseif ($_POST['overwinning'] == ""){

        echo"Er is geen overwinning aantal ingevoerd.";

        }

    elseif ($_POST['podium'] == ""){

        echo"Er is geen podium aantal ingevoerd.";

        }

      else{
      

$query="INSERT statsrobert (deelname, overwinning, podium)";

$query.="VALUES ('";

$query.=$_POST["deelname"]."','";

$query.=$_POST["overwinning"]."');";

$query.=$_POST["podium"]."');";

$result=mysql_query($query) or die ("FOUT: ".mysql_error());

if($result==1){

        echo"<p>Het aanmaken van <em>Robert's statestieken</em> is voltooid.</p>";

    }else{

        echo"<p>Het aanmaken van <em>Robert's statestieken</em> is <b>niet</b> gelukt. p>";
    }

}

?>


Als ik vervolgens alle regels inzake podium weghaal, dat doet hij het gewoon. Op de website worden de gegevens dan ook goed weergegeven. Na een beetje prutsen ben ik er denk achter gekomen waar de fout ligt. Op regel 39 herhaalt zich een deel van regel 37. Doel ik op het volgende fragment welke aan het einde van regel staat:

code:
1
."');";


Ik denk dat dit ook te maken heeft met de cel opschrijving in de database, alleen weet ik me geen raad om dit op te lossen. Met o.a. PHP.net kom ik er niet uit. Ik heb de zoekfunctie hier gebruikt maar ik kom geen gelijkwaardig probleem vinden. Misschien gebruik ik de verkeerde zoekwoorden. Mijn verontschuldingen mocht dit bericht misplaatst zijn.

Weten jullie misschien een oplossing voor deze error. Wordt erg gewaardeerd.


Bij voorbaat dank,

Giancarlo

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:20

gorgi_19

Kruimeltjes zijn weer op :9

echo je (INSERT)-query eens ipv uitvoeren, dan zie je waarschijnlijk vanzelf de fout :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Echo de query eens die daadwerkelijk wordt uitgevoerd. De PHP-code zegt niks.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
POST en GET variabelen rechtstreeks in een query stoppen is een security risk/staaltje slordig programmeren. Never trust user input. Zoek maar wat op 'SQL injection' en 'mysql_real_escape_string()' (een PHP-functie die kan helpen) :)

[ Voor 16% gewijzigd door Voutloos op 04-01-2006 23:35 ]

{signature}


  • r0bert
  • Registratie: September 2001
  • Laatst online: 26-01 16:11
$query.=$_POST["overwinning"]."');"; en volgende..

spatie voor values

je query echoën en debuggen.. fouten die je toch zo opvallen als je je query ziet lijkt me?

:/ try:

("<b>FOUT</b> in <br />".$query."<br />Melding:".mysql_error());

[ Voor 27% gewijzigd door r0bert op 04-01-2006 23:45 ]


Verwijderd

Topicstarter
Mijn excuses, ik snap het even niet. De ingevoerde cijfers worden ge'echo'd zegmaar, op de profiel pagina van deze persoon. Als ik kijk naar mijn nieuws-script dan is de structuur hetzelfde. Er wordt afgesloten met het echo'en van 1 van de 2 meldingen. Ik zou geen andere manier weten of wat ik nogmaals dien te echo'en.

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Doe eens echo $query; en je ziet wat je uberhaupt naar de db stuurt. Dat bekijken is het 1e wat je moet doen bij alle sql problemen.

{signature}


Verwijderd

misschien ook meteen even naar het onderwerp sql injection onder de loep nemen ;)

Verwijderd

Topicstarter
Dank voor jullie snelle reacties.Ik zal er meteen naar kijken. Maar hoe verklaart je dat als ik het genoemde uitvoer met alleen deelname en overwinning (regel deelname zit dan nog steeds in de tabel), dat het dan wel werkt.

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Omdat je een komma tussen overwinning en podium vergeten bent, iets dat je meteen ziet als je de query echo't.
(regel deelname zit dan nog steeds in de tabel)
Syntax error is een fout die te maken heeft met: syntax. De syntax van je query blijft fout, of je tabel nou zelf klopt of niet. ;)

[ Voor 48% gewijzigd door Voutloos op 05-01-2006 00:00 ]

{signature}


  • mocean
  • Registratie: November 2000
  • Laatst online: 30-03 18:32
Op regel 37 staat sowieso een haakje te veel.

Koop of verkoop je webshop: ecquisition.com


Verwijderd

Topicstarter
Hmm, dit gaat toch allemaal wat verder. Als ik het haakje weghaal op regel 37 dan krijg ik een syntax error als ...the right syntax to use near ';'78;'' at line 1. Ook heb ik op verschillende plaatsen een komma toegevoegd. Dezelfde error krijg ik dan alleen is het cijfer dan anders.

Als echo $query; invoer i.p.v. de twee echo's onderaan dan krijg ik ook een gelijkwaardige error als eerder vermeld. Even google'n hoe dat moet dus.

Zoals je merkt ben ik nogal nieuw hiermee. Even off-topic. Weten jullie een goed boek over PHP en MySQL, welke zeg maar voorbeeld gewijs deze zaken uitlegd? Zo'n dikke pil waar je alle basisbeginselen in kan vinden.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Voor boeken kun je kijken in [rml][ Alg] Centraal boekentopic - part II[/rml].

En syntax errors zijn altijd gewoon tikfouten. Echo de query, bekijk hem eens goed, voer hem uit via phpMyAdmin of een andere tool, kijk of je daar ook een error krijgt, etc. Je hebt gewoon ergens een tik- of denkfoutje gemaakt, en waarschijnlijk mis je ergens een haakje, quote of spatie, of je hebt teveel haakjes en/of quotes. Hoe dan ook moet je hier met een beetje debuggen eigenlijk ook zelf wel uit kunnen komen, en debuggen kun je alleen zelf, aangezien jij èn over de complete code beschikt, èn over de testdata.

Om verder wel aan te wijzen waar de fout zit: op regel 37 en 39 gebruik je puntkomma's in je query, en die horen daar niet. Voor de juiste syntax kun je kijken in zo'n beetje elke SQL-tutorial die je via Google kunt vinden. Succes. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.