mySQL错误,我找不到

时间:2014-01-31 23:39:55

标签: php mysql sql

我正在写作,因为我无法找到我的错误,我从另一个文档中复制了这些代码并编辑了一些内容,但后来我遇到了错误。我无法看到它是什么。

以下错误是:

  

您的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>";

2 个答案:

答案 0 :(得分:5)

BYreserved 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,并使用PDOMySQLi - 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变量。