我一直试图用PHP将数据放入mysql,但我一直收到这个错误:
Error: 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 'Show, Picture, Name, Date, Poster, Text) VALUES('1','http://www.thepsychicnetwor' at line 1
这是我在insert.php页面上的当前代码。
这是我的表格页面:
如何修复错误
编辑: 这修复了它但它仍然不会插入“文本”
$sql="INSERT INTO Posts (`Show`, Picture, Name, Date, Poster, Text) VALUES('$_POST[Show]','$_POST[Picture]','$_POST[Name]','$_POST[Date]','$_POST[Poster]','$_POST[Text]')";
答案 0 :(得分:3)
Show
是reserved MySQL word,您需要使用反引号将其转义为:
$sql="INSERT INTO Posts (`Show`, Picture, Name, Date, Poster, Text) VALUES('$_POST[Show]','$_POST[Picture]','$_POST[Name]','$_POST[Date]','$_POST[Poster]','$_POST[Text]')";
更新:
由于您的text
列不起作用,我可以想到的唯一原因是@ Fred-ii在您的问题中已经评论过,您可能会在值中包含撇号。
一种选择是对您的值使用mysql_real_escape_string
:
mysql_real_escape_string($_POST[Text])
对包含以下字符的所有值使用此功能:
\ x00,\ n,\ r,\,',“和\ x1a。
请确保您在链接的mysql_real_escape_string
页面上阅读“警告”。
答案 1 :(得分:1)
你必须在$ _POST变量上加上单引号。
$_POST['Show']
不是
$_POST[Show]
同样适用于所有其他变量。
答案 2 :(得分:1)
这是SQL语句:
INSERT INTO Posts (Show, Picture, Name, Date, Poster, Text)
VALUES('$_POST[Show]', '$_POST[Picture]', '$_POST[Name]', '$_POST[Date]',
'$_POST[Poster]','$_POST[Text]');
单词show
是MySQL中的保留字。实际上,date
和text
也是关键字,但不是保留的。您需要show
的反对标记,并且应该将其用于date
和text
:
INSERT INTO Posts (`Show`, Picture, Name, `Date`, Poster, `Text`)
VALUES('$_POST[Show]', '$_POST[Picture]', '$_POST[Name]', '$_POST[Date]',
'$_POST[Poster]','$_POST[Text]');
答案 3 :(得分:0)
请尝试以下查询。 post变量用大括号扭曲。
$sql="INSERT INTO Posts (`Show`, Picture, Name, Date, Poster, Text) VALUES('{$_POST[Show]}','{$_POST[Picture]}','{$_POST[Name]}','{$_POST[Date]}','{$_POST[Poster]}','{$_POST[Text]}')";
答案 4 :(得分:0)
的index.html:
<form action="post.php" method="post">
<input type="radio" name="Show" value="1"> <----- Click This<br><br>
Picture: <input type="text" name="Picture" class="span12" /><br><br>
Name: <input type="text" name="Name" class="span12" /><br><br>
Date:<br> <input type="text" name="Date" id="datepicker"><br><br>
Poster: <input type="text" name="Poster" class="span12" /><br><br>
Text: <textarea class="span12" name="comment" cols="45" rows="6" id="comment" class="bodytext"></textarea>
<input class="btn btn-large pull-right margin-top-15" type="submit" />
<input class="btn btn-small pull-left margin-top-15" type="reset" />
</form>
post.php中:
<?php
$con = mysql_connect("localhost","username","password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("DatabaseName", $con);
function clean_string($value) {
if(get_magic_quotes_gpc() ) {
$value = stripslashes($value);
}
return mysql_real_escape_string($value);
}
$Show = clean_string($_POST['Show']);
$Picture = clean_string($_POST['Picture']);
$Name = clean_string($_POST['Name']);
$Date = clean_string($_POST['Date']);
$Poster = clean_string($_POST['Poster']);
$Comment = clean_string($_POST['comment']);
$sql="INSERT INTO `posts` (`Show`, `Picture`, `Name`, `Date`, `Poster`, `Text`) VALUES ('$Show','$Picture','$Name','$Date','$Poster','$Comment')";
if (!mysql_query($sql,$con))
{
echo mysql_error() . "<br />$sql";
}
echo "1 record added";
mysql_close($con)
?>
注意: 用您的连接替换连接和数据库凭据。 只需尝试此代码,不再发表评论。
答案 5 :(得分:0)
尝试使用不同的单词而不是显示,
或者把它放入单个状态['显示']