Error in query

  • Beste,


    Ik heb een overhoor script, en bij dit script moet het de vragen & antwoorden in MySQL zetten.
    Ik had eerst 10 vragen, en dit heb ik nu uitgebreid naar 20.
    De scripting heb ik als volgt veranderd:

    PHP
    for($i = 1; $i <= 20; $i++){
    $antw.$i_1 = mysql_real_escape_string($_POST['antw'.$i.'_1']);
    $antw.$i_2 = mysql_real_escape_string($_POST['antw'.$i.'_2']);
    $antw.$i_3 = mysql_real_escape_string($_POST['antw'.$i.'_3']);
    $antw.$i_4 = mysql_real_escape_string($_POST['antw'.$i.'_4']);
    }


    I.p.v elke keer $antw1_1, $antw2_1 etc.


    De mysql query is nu dit:


    (ik weet dat ie erg lang is, maar krijg het niet korter).


    Nu krijg ik een error:
    Column count doesn't match value count at row 1.
    Zou iemand weten wat dit betekend / waar de fout zit?


    Bedankt alvast!


    Lars
    [/code]

  • Guest, wil je besparen op je domeinnamen? (ad)
  • Dat betekend dat het aantal opgegeven waardes/velden niet overeenkomt met dat wat er in je database staat... Wellicht je gaan verdiepen in je databasestructuur?

  • PHP
    for($i = 1; $i <= 20; $i++){
    ${'antw'.$i.'_1'} = mysql_real_escape_string($_POST['antw'.$i.'_1']);
    ${'antw'.$i.'_2'} = mysql_real_escape_string($_POST['antw'.$i.'_2']);
    ${'antw'.$i.'_3'} = mysql_real_escape_string($_POST['antw'.$i.'_3']);
    ${'antw'.$i.'_4'} = mysql_real_escape_string($_POST['antw'.$i.'_4']);
    }


    Werkt dit?

  • @ Darsstar, nee werkt helaas nog niet.
    Dit is btw. m'n MySQL tabel:

  • Die database structuur is hier de fout niet...
    Je vergeet vier velden in het INSERT INTO toetsen(hier vergeet je vier velden)...


    Wil je weten welke?
    Dat kan je zelf ook wel uitzoeken...
    Het is redelijk simpel...
    Kopieer alle velden, en zorg dat die allemaal op een enkele regel komen te staan...
    Dan laat je elke "," vervangen door ", " (drie spaties komen er dus bij)
    Dan kopieer je alle waarden, en die zet je allemaal op de regel daar onder.
    Als je dan een monospace lettertype hebt (elke letter neemt even veel ruimte in beslag) kun je zo ziet dat beide regels niet evn lang zijn, er missen namelijk vier velden in de bovenste regel.
    Dan moet je alleen uitzoeken waar...
    Die velden zet je er dan ook bij, en tada, MySQL geeft geen foutmelding meer!


    Verder geef ik je als huiswerk op om wat over database normalisatie te gaan lezen!
    En dan kun je namen zoals antw17_1 vervangen door antwoord[17][1] zodat je fijn door arrays kunt loopen, en ja kan net zoveel antwoorden, vragen en rad(wat dit ook mag zijn) dingen aanmaken als je maar wilt zonder de database structuur aan te passen...

  • Ik heb weinig te doen, dus heb even de query voor je wat netter gemaakt (wel wat langer, maar tis iig overzichtelijk :p )



    Tevens is de fout hierin nog NIET opgelost, dit zal je zelf moeten uitzoeken (zijn mij er een beetje erg veel) ;)


    Succes :)

    Het bovenstaande bericht werd geplaatst door een lid waarvan het account verwijderd is.

  • Toch ga ik je toch echt een wijze tip geven!


    Maak van deze tabel is een stuk of 3 aparte tabellen.
    Een tabel met vragen, andere tabellen met antwoorden en rad.


    Waarom zal je dit moeten doen?
    Heel logisch, dit omdat je dan ruimte bespaart in je database niet 20 keer de zeflde vragen voor bij ziet komen, omdat je dit simpel met een ID mee kan geven..


    Mocht je er niet uit komen zal ik misschien nog wel gastvrij willen zijn om de tabel te willen maken.
    Of iemand anders is me voor! :)

    School
    Tweedejaars Informatica Student @ Hogeschool Rotterdam.


    Webtalen
    - PHP ( OOP )
    - SQL
    - JavaScript i.c.m. jQuery framework
    - (x)HTML
    - CSS
    - Actionscript
    - XML


    Programmeertalen
    - Java
    - C#
    - Ruby i.c.m. on Rails framework

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!