我正在写作,因为我无法找到我的错误,我从另一个文档中复制了这些代码并编辑了一些内容,但后来我遇到了错误。我无法看到它是什么。
以下错误是:
您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行“by,telefon,email”VALUES(987 ,,,, by ,,)附近使用正确的语法
我的代码如下:
$taelf = mysql_result(mysql_query("SELECT COUNT(*) FROM `Firma` WHERE `navn` = '$navn'"),0);
if($taelf < 1){
mysql_query("INSERT INTO `Firma` (navn,cvr,Adresse,postnr,by,telefon,email)
VALUES ($_POST[navn], $_POST[cvr],
$_POST[adresse], $_POST[postnr],
by, $_POST[nummer], $_POST[email]
)"
) or die(mysql_error());
echo "<div id='success'>Vupti, firmaet er nu oprettet. '$_POST[navn]','$_POST[cvr]','$_POST[adresse]','$_POST[by]','$_POST[postnr]','$_POST[nummer]','$_POST[email]'</div>";
答案 0 :(得分:5)
BY
是reserved word。如果您要命名具有该名称的列,则必须将其包装为刻度:
INSERT INTO `Firma` (navn,cvr,Adresse,postnr,`by`,telefon,email)
另请参阅Fabien Warniez的答案,该答案解释了您还需要将字符串值包装在引号中。
Please, don't use mysql_*
functions in new code。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDO或MySQLi - this article将帮助您确定哪个。如果您选择PDO,here is a good tutorial。
您也对SQL injections
答案 1 :(得分:3)
您需要在字符串值周围添加引号:
mysql_query("INSERT INTO `Firma` (navn,cvr,Adresse,postnr,by,telefon,email)
VALUES ('$_POST[navn]', '$_POST[cvr]', '$_POST[adresse]', '$_POST[postnr]',
'by', '$_POST[nummer]', '$_POST[email])'") or die(mysql_error());
请注意,这应该可以解决您的语法问题,但您确实应该转义POST变量。