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>');
}
?>
首先停止使用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保留字,所以你需要添加反引号围绕此列。
感谢您的帮助!Devpro您最好的帮助是说,我需要放弃MySQL和开始使用的mysqli或DPO,我也;将代码更改为msqli,现在它突然生效,谢谢! – PindaWorld
@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());
酷没有注意到鹰眼...... – devpro
应该从错误信息明显乌尔知道,因为它说错误的'开始fulltext'。 – Barmar
我确实注意到了,谢谢,已经改变了我发布后,但感谢注意! – PindaWorld
缺少启动和() – devpro
“INSERT INTO消息(Titel的,STEXT,全文,SURL,节,日期)VALUES('”。$ Titel的。 “ ''”。$ STEXT“。 '' “$全文” '' “$ SURL。” '' “$节,” ''”,$日期。 “'”) – devpro
'插入到表(列)值(值)'。 ...同时使用反向日期列 – devpro