MySQL语法错误 - 在第1行

问题描述:

我在我的PHP中遇到错误。有人可以帮助我吗?MySQL语法错误 - 在第1行

我得到这个错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'fulltext, surl, burl, date) VALUES 'Webite is online!', 'This is a short text lo' at line 1

这是我的代码:

<?php 
if(isset($_POST['submit'])) { 
     if(!empty($_POST['titel']) && !empty($_POST['stext']) && !empty($_POST['fulltext']) && !empty($_POST['surl']) && !empty($_POST['burl'])) { 
      $titel = secure($_POST['titel']); 
      $stext = secure($_POST['stext']); 
      $fulltext = secure($_POST['fulltext']); 
      $surl = secure($_POST['surl']); 
      $burl = secure($_POST['burl']); 
      $date = date('d/m/y H:i:s'); 

        $sql = mysql_query("INSERT INTO news (titel, stext, fulltext, surl, burl, date) VALUES '".$titel."', '".$stext."', '".$fulltext."', '".$surl."', '".$burl."', '".$date."'")or die(mysql_error()); 
        if($sql) { 
         echo('News posted succesful.'); 
         echo('<meta http-equiv="refresh" content="3" />'); 
        } else { 
         echo'There was an error, please try again.'; 
         echo('<meta http-equiv="refresh" content="3" />'); 
        } 
     } else { 
      echo('Not all fields are filled.'); 
      echo('<meta http-equiv="refresh" content="3" />'); 
     } 
    } else { 
     echo(' 
     <form method="post" action="#"> 
     <table width="100%" cellpadding="0" cellspacing="2"> 
     <tr> 
     <td>Titel</td> 
     <td><input type="text" name="titel" /></td> 
     </tr> 
     <tr> 
     <td>Short news</td> 
     <td><textarea name="stext" rows="4" cols="50" ></textarea></td> 
     </tr> 
     <tr> 
     <td>Long news</td> 
     <td><textarea name="fulltext" rows="4" cols="50" ></textarea></td> 
     </tr> 
     <tr> 
     <td>150x150 image url</td> 
     <td><input type="text" name="surl" /></td> 
     </tr> 
     <tr> 
     <tr> 
     <td>*x* image url</td> 
     <td><input type="text" name="burl" /></td> 
     </tr> 
     <tr> 
     <tr> 
     <td></td> 
     <td><input type="submit" name="submit" value="Post" /></td> 
     </tr> 
     </table> 
     </form>'); 
    } 
?> 
+2

缺少启动和() – devpro

+0

“INSERT INTO消息(Titel的,STEXT,全文,SURL,节,日期)VALUES('”。$ Titel的。 “ ''”。$ STEXT“。 '' “$全文” '' “$ SURL。” '' “$节,” ''”,$日期。 “'”) – devpro

+2

'插入到表(列)值(值)'。 ...同时使用反向日期列 – devpro

首先停止使用mysql_*其弃用,接近PHP 7.使用mysqli_*PDO。在查询

的问题是,你缺少的VALUES()括号:

INSERT INTO table (column1...) VALUES (values1...) 

你修改后的查询:

INSERT INTO news (titel, stext, `fulltext`, surl, burl, date) VALUES ('".$titel."', '".$stext."', '".$fulltext."', '".$surl."', '".$burl."', '".$date."'") 

附注:

确保列titel是正确的名称。

UPDATE:

而作为Barmar先生@barmar提到fulltext是MYSQL保留字,所以你需要添加反引号围绕此列。

+1

感谢您的帮助!Devpro您最好的帮助是说,我需要放弃MySQL和开始使用的mysqli或DPO,我也;将代码更改为msqli,现在它突然生效,谢谢! – PindaWorld

+0

@pindaworld不在乎哪个回答ü选择,但很高兴使用mysqli的好作品兄弟 – devpro

fulltext是一个MySQL reserved word。如果你想用它作为列名,你需要把它放入反引号中。

您还缺少值列表的括号。

$sql = mysql_query("INSERT INTO news (titel, stext, `fulltext`, surl, burl, date) VALUES ('".$titel."', '".$stext."', '".$fulltext."', '".$surl."', '".$burl."', '".$date."')")or die(mysql_error()); 
+0

酷没有注意到鹰眼...... – devpro

+1

应该从错误信息明显乌尔知道,因为它说错误的'开始fulltext'。 – Barmar

+0

我确实注意到了,谢谢,已经改变了我发布后,但感谢注意! – PindaWorld