这几乎是我第一次使用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());
如果这还不够,请告诉我。我试过很多东西,但似乎都想不通。
您混淆了insert
和update
语法。更换
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