Avatar billede Dacarts Nybegynder
17. juni 2011 - 00:43 Der er 4 kommentarer og
1 løsning

opretbruger problem - mystisk fejl

Hei til alle.

Jeg har været i gang i et godt stk tid nu med den her kode til en opret bruger - den er pakket ind i en function.

når jeg forsøger at indtaste oplysningerne i min formular og trkker på submit knapper så kommer denne fejl "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 'by, postnr, email, sex, password) values ('Daniel Clausen','viborg','8800','dac_' at line 1"


Min kode ser sådan her ud.

function opretbruger($db){
   
    echo "
        <form method='post' action='".$_SERVER['PHP_SELF']."?page=71'>
            <br /><input name='navn' type='text' placeholder='Fulde Navn' size='29' value='' />*<br /><br />
            <input name='by' type='text' placeholder='Din by' size='16' value='' />*
            <input name='postnr' type='text' placeholder='Postnr' value='' size='4' />*<br /><br />
            <input name='email' type='text' placeholder='E-Mail (Brugernavn)' size='29' value='' />*<br /><br />
            <input name='opret_form_password1' type='password' placeholder='Password' size='29' value='' />*<br /><br />
            <input name='opret_form_password2' type='password' placeholder='Gentag Password' size='29' value='' />*<br /><br />
            K&oslash;n:
            <select name='sex'>*
            <option value='F'>Female</option>
            <option value='M'>Male</option>   
            </select><br /><br />
            <input name='opret_bruger_button' type='submit' placeholder='nada' size='18' value='Opret Bruger' /><br />
        </form>
        ";
            echo "<br />Alle med (*) skal udfyldes!.<br /><br />";
       
    if(isset($_SESSION['opret_eRR'])){
        echo implode("<br />",$_SESSION['opret_eRR']);
        unset($_SESSION['opret_eRR']);
    }
   
    if(isset($_POST['opret_bruger_button'])){
        $_SESSION['opret_eRR'] = array();
       
        if(empty($_POST['navn'])){
            $_SESSION['opret_eRR'][] = "<br />Du mangler at udfylde Navn.<br />";
        }
       
        if(empty($_POST['by'])){
            $_SESSION['opret_eRR'][] = "Du mangler at udfylde By.<br />";
        }
       
        if(empty($_POST['postnr'])){
            $_SESSION['opret_eRR'][] = "Du mangler at udfylde postnr.<br />";
        }
       
        if(empty($_POST['email'])){
            $_SESSION['opret_eRR'][] = "Du mangler at udfylde Email.<br />";
        }
       
        if(empty($_POST['sex'])){
            $_SESSION['opret_eRR'][] = "<br />Er du mand eller dame ?.<br />";
        }
       
        if(empty($_POST['opret_form_password1'])){
            $_SESSION['opret_eRR'][] = "Du mangler at udfylde Password.<br />";
        }
       
        if(empty($_POST['opret_form_password2'])){
            $_SESSION['opret_eRR'][] = "Du mangler at udfylde Gentaget Password.<br />";
        }
       
        if((!empty($_POST['opret_form_password1']) && !empty($_POST['opret_form_password2'])) && ($_POST['opret_form_password1'] <> $_POST['opret_form_password2'])){
            $_SESSION['opret_eRR'][] = "Dit password og gentaget password er ikke ens.<br />";
        }
       
        if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
            $_SESSION['opret_eRR'][] = "E-Mailen er ikke gyldig.<br />";
        }
       
        echo "<pre>";
            print_r($_SESSION['opret_eRR']);
        echo "</pre>";
        unset($_SESSION['opret_eRR']);
       
        $email = $_POST['email'];
        $sql = "select * from user where email = '".$email."'";
        $sqlQuery = mysqli_query($db,$sql);
        $intQuery = mysqli_num_rows($sqlQuery);
        if($intQuery == true){
            $_SESSION['opret_eRR'][] = "Bruger eksisterer allerede i systemet.";
        }

        if(!empty($_SESSION['opret_eRR'])){
            header('location:?page=71');
        }
       
       
        $user_name = $_POST['navn'];
        $user_by = $_POST['by'];
        $user_postnr = $_POST['postnr'];
        $user_email = $_POST['email'];
        $user_sex = $_POST['sex'];
        $user_password = sha1($_POST['opret_form_password1']);
       
        $sql = "insert into user (navn, by, postnr, email, sex, password) values ('".$user_name."','".$user_by."','".$user_postnr."','".$user_email."','".$user_sex."','".$user_password."')";
        $sqlQuery = mysqli_query($db,$sql);
        if(!$sqlQuery){
            echo "Fejl i foresp&oslash;rgsel: ".mysqli_error($db);
        }else{
            echo "indhold gemt";
        }
    }
}

og min database ser sådan her ud.

===Database golfen

== Struktur-dump for tabellen user

|------
|Feltnavn|Datatype|Nulværdi|Standardværdi
|------
|//**id**//|int(11)|Nej|
|navn|varchar(255)|Nej|
|by|varchar(255)|Nej|
|postnr|int(11)|Nej|
|email|varchar(255)|Nej|
|sex|varchar(255)|Nej|
|password|varchar(255)|Nej|
|date|timestamp|Nej|CURRENT_TIMESTAMP
== Data dump for tabellen user

håber nogen kan se hvad jeg gør forkert på forhånd TAK!
Avatar billede Dacarts Nybegynder
17. juni 2011 - 00:45 #1
kan se ved
$sql = "insert into user (navn, by, postnr, email, sex, password) values og linjen ned der forsvinder det om bag ved tekst feltet


det er hvad der står i den linje

('".$user_name."','".$user_by."','".$user_postnr."','".$user_email."','".$user_sex."','".$user_password."')";
Avatar billede erikjacobsen Ekspert
17. juni 2011 - 09:06 #2
Ordet "by" er et reserveret ord i SQL. Du kan evt. skrive det som:

  $sql = "insert into user (navn, `by`, postnr, email, sex, password) values    .....osv.....
Avatar billede Dacarts Nybegynder
17. juni 2011 - 09:20 #3
Arhmen ja selvføgelig... sådan nu spiller det sku... har sidet alt for længe og gloede på det... burde ha set det men gjorde jeg ikke... men nu spiller det... kan se du ikk gider points men opret et svar hvis du vil have dem... hvis ikke så får du bare et KÆMPE tak for hjælpen.... :)
Avatar billede erikjacobsen Ekspert
17. juni 2011 - 09:27 #4
Nej tak, ingen point til mig. :)
Avatar billede Dacarts Nybegynder
17. juni 2011 - 09:43 #5
!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester