Hallo,

Mijn insert into geeft de volgende fout melding:

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

Hij voerd wel alle informatie in de database.

dit is de query:

//MySql query
 $sql = mysql_query("INSERT INTO `users` (`Username`, `Password`, `Email`, `Logo`, `Homepage`, `Quote`, `Newsletter`, `joindate`, `Actcode`, `Level`, `Ip`) VALUES ('$username', '$password', '$email' ,'$logo', '$homepage', '$quote', '$newsletter', '$date', '$code', '0', '$ipaddr')");


Dit is de database

--
-- Tabelstructuur voor tabel `users`
--

CREATE TABLE IF NOT EXISTS `users` (
  `uid` int(10) NOT NULL AUTO_INCREMENT COMMENT 'Users ID',
  `Username` varchar(25) NOT NULL COMMENT 'Username',
  `Password` varchar(100) NOT NULL COMMENT 'Password',
  `Email` varchar(75) NOT NULL COMMENT 'E-Mail Address',
  `Logo` varchar(75) NOT NULL COMMENT 'Logo',
  `Homepage` varchar(75) NOT NULL COMMENT 'Homepage',
  `Quote` varchar(100) NOT NULL COMMENT 'Quote',
  `Newsletter` varchar(1) NOT NULL COMMENT 'Newsletter',
  `joindate` varchar(12) NOT NULL COMMENT 'Join Data',
  `Actcode` varchar(10) NOT NULL COMMENT 'Activation Code',
  `Level` int(3) NOT NULL COMMENT 'Powers Level',
  `Ip` varchar(25) NOT NULL COMMENT 'IP Address',
  PRIMARY KEY (`uid`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;


Ik hoop dat iemand de oplossing weet.
Probeer zo:


<?php
$sql = mysql_query("INSERT INTO `users` (`Username`, `Password`, `Email`, `Logo`, `Homepage`, `Quote`, `Newsletter`, `joindate`, `Actcode`, `Level`, `Ip`) VALUES ('".$username."', '".$password."', '".$email."' ,'".$logo."', '".$homepage."', '".$quote."', '".$newsletter."', '".$date."', '".$code."', 0, '".$ipaddr."');");
?>


En als dat niet werkt, moet je even de fout ontdekken:


<?php
if(!$sql){
echo "MYSQL fout:".mysql_error();
}
?>
Let ook op SQL injection
1. backticks horen niet thuis in een sql-statement!
2. gebruik geen database / tabel / veld namen die voorkomen op de lijst van `gereserveerde woorden`
3. mysql_query geeft een resultaat terug geen sql dus dan kies je er niet voor om:
<?php
$sql = mysql_query();
// te doen, maar
$sql = "SELECT NOW() datum FROM DUAL";
if ($result = mysql_query($sql)) {
}
else {
// hier de foutafhandeling
}
?>
-> dus kies logische variabele namen
Bedankt,

Nadat ik de opzet een beetje veranderd heb werkt mijn script, Thanks!


$sql = "INSERT INTO users (Username, Password, Email, Logo, Homepage, Quote, Newsletter, joindate, Actcode, Level, Ip) VALUES ('".$username."', '".$password."', '".$email."' ,'".$logo."', '".$homepage."', '".$quote."', '".$newsletter."', '".$date."', '".$code."', '0', '".$ipaddr."')";
            if ($result = mysql_query($sql)){
                echo "GELUKT!";
            }
            else{
                echo "MYSQL Error:".mysql_error();
            }
'0'


Een int(integer) hoef je niet binnen quotes te zetten!
Verder zou je het level een standaard van 0 kunnen geven, dan kun je hem uit je script gooien, want ik neem aan dat deze altijd met hetzelfde start bij registratie?

Reageren