我在PHP中遇到错误。有人可以帮助我吗?
我收到此错误:
您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在'fulltext,surl,burl,date)附近使用正确的语法VALUES'Webite在线!','这是第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>');
}
?>
答案 0 :(得分:1)
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());
答案 1 :(得分:0)
首先停止在PHP 7中使用mysql_*
已弃用并关闭。使用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
的名称正确。
<强>更新强>
正如Barmar @barmar先生提到的那样fulltext
是MYSQL保留字,所以你需要在这个专栏周围添加反引号。