如何将数据插入mysql

时间:2014-02-02 04:07:49

标签: php mysql

我一直试图用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页面上的当前代码。

http://pastebin.com/nWvrDPN7

这是我的表格页面:

http://pastebin.com/gyUdSgsz

如何修复错误

编辑: 这修复了它但它仍然不会插入“文本”

$sql="INSERT INTO Posts (`Show`, Picture, Name, Date, Poster, Text) VALUES('$_POST[Show]','$_POST[Picture]','$_POST[Name]','$_POST[Date]','$_POST[Poster]','$_POST[Text]')";

6 个答案:

答案 0 :(得分:3)

Showreserved 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中的保留字。实际上,datetext也是关键字,但不是保留的。您需要show的反对标记,并且应该将其用于datetext

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)

尝试使用不同的单词而不是显示,
或者把它放入单个状态['显示']