2016-01-12 128 views
0

這幾乎是我第一次使用MYSQL,我似乎無法修復這個我不斷收到的錯誤。我試圖將數據存儲到其id(第一列)上具有auto_increment的表中。 我不斷收到的錯誤是這樣的:MySQL插入錯誤

「您的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的‘voorletters =’ASD正確的語法手冊」,tussenvoegsel =「」,achternaam =「」,roepnaam =「」,ADRES =「」,'位於第1" 行

我只是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()); 

如果這是不夠的信息,請告訴我。我嘗試了很多東西,但我似乎無法弄清楚。

+0

RTM的http://dev.mysql.com/doc/refman/5.7/en/insert.html和http://dev.mysql.com/doc/refman/5.7 /en/update.html –

+1

INSERT不使用WHERE。刪除where或將您的命令更改爲UPDATE –

+0

[您的腳本存在SQL注入攻擊風險。](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in- php) –

回答

5

您混淆了insertupdate語法。更換

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

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

而且你真的應該使用預處理語句避免語法錯誤,並且由於用戶輸入的SQL注入。

+1

實際上MySQL有一個'INSERT ... SET'語法--OP只是缺少關鍵字'SET'。 – eggyal

+0

謝謝! 'set'固定給我^ -^ –

0

只需使用以下代碼。請確保你的每場sequentially-插入數據

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

插入沒有'WHERE'子句 – genespos

0

你有一個錯誤的語法

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 
+0

實際上MySQL有一個'INSERT ... SET'語法-OP只是缺少關鍵字'SET'。 – eggyal

0

你應該刪除````````````,但在phpmyadmin中可以凌亂的幾乎每一個地方。 而且你不應該連接每一行,在一個「...」中執行,並使用退格鍵使其更具可讀性。

所以:

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

它會像現在一樣沒有引號嗎? –