MySQL插入错误


MySQL insert errors

这几乎是我第一次使用MYSQL,而且我似乎无法修复我一直遇到的这个错误。我正试图将数据存储到一个表中,该表的id(第一列)上有一个auto_increment。我一直得到的错误是:

"您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,在第1行的'voorletters='asd'、tussenvoegsel=''、achternaam=''、roepnaam=''、adres=''、'附近找到正确的语法。"

我只是在文本框中填充了一点rubish,也没有需要数据的列。这是我使用的代码:

if(isset($_POST['save']))
{   
    $voorletters = $_POST['voorletters'];
    $tussenvoegsel = $_POST['tussenvoegsel'];
    $achternaam = $_POST['achternaam'];
    $roepnaam = $_POST['roepnaam'];
    $adres = $_POST['adres'];
    $postcode = $_POST['postcode'];
    $plaats = $_POST['plaats'];
    $geslacht = $_POST['geslacht'];
    $emailadres = $_POST['emailadres'];
    $telefoonnummer = $_POST['telefoonnummer'];
    $mobielenummer = $_POST['mobielenummer'];
    $geboortedatum = $_POST['geboortedatum'];
    $bsn = $_POST['bsn'];
    mysql_query("INSERT INTO `naw` "
            . "voorletters ='$voorletters', "
            . "tussenvoegsel ='$tussenvoegsel', "
            . "achternaam ='$achternaam', "
            . "roepnaam ='$roepnaam', "
            . "adres ='$adres', "
            . "postcode ='$postcode', "
            . "plaats ='$plaats', "
            . "geslacht ='$geslacht', "
            . "emailadres ='$emailadres', "
            . "telefoonnummer ='$telefoonnummer', "
            . "mobielenummer ='$mobielenummer', "
            . "geboortedatum ='$geboortedatum', "
            . "bsn ='$bsn' "
            . "WHERE id = '$id'")
            or die(mysql_error()); 

如果这还不够,请告诉我。我试过很多东西,但似乎都想不通。

您混淆了insertupdate语法。更换

INSERT INTO `naw` voorletters ='$voorletters'...

带有

UPDATE `naw` set voorletters ='$voorletters'....

您应该真正使用Prepared Statements来避免由于用户输入而导致的语法错误和SQL注入。

语法错误

INSERT语法为

INSERT INTO `YourTableName`(`Field1`, `Field2`, `Field3`, `Field4)
VALUES ('value-1','value-2','value-3','value-4')

UPDATE语法为

UPDATE `YourTableName` 
SET `Field1`='value-1',`Field2`='value-2',`Field3`='value-3',`Field4`='value-4'
WHERE YourConditions

只需使用以下代码。确保按顺序为每个字段插入数据-

mysql_query("INSERT INTO `naw` VALUES(
            '".$voorletters."',
            '".$tussenvoegsel."',
            '".$achternaam."',
            '".$roepnaam."',
            '".$adres."',
            '".$postcode."',
            '".$plaats."',
            '".$geslacht."',
            '".$emailadres."',
            '".$telefoonnummer."',
            '".$mobielenummer."',
            '".$geboortedatum."',
            '".$bsn."')")
            or die(mysql_error());

您应该删除``around naw,这在phpmyadmin中是可以的,但几乎在其他地方都很乱。你不应该把每一行都连接起来,用一个"…"来完成,并使用退格使其更可读。

因此:

mysql_query("INSERT INTO naw
            VALUES('$voorletters', 
                    '$tussenvoegsel',
                    ... ,
                     WHERE id = '$id'");//you can't do that, maybe you should use an UPDATE