无法从我的表单中插入INTO

时间:2015-03-28 15:12:53

标签: php mysql forms insert

我有这个表格

<form method="post" action="new_announcement.php">
<fieldset>
    <legend>Create New Announcement</legend>
Subject :<input type="text" style="float-offset: !important;" name="subject" required="required" /><br>
Content :<br />
<textarea rows="10" cols="60" name="content"></textarea>   </br></br> 
<input type="submit" value="Upload"/>
</fieldset>
</form>

我希望将表单中的数据存储到数据库中的表中。

我的 INSERT INTO 代码就是这个......

<?php

include_once 'header.php';

$username = $_SESSION["username"];

if(isset($_POST['username']))
{
    $subject = $_POST['subject'];
    $content = $_POST['content'];

    $sqlinsert = "INSERT INTO announcements (author,subject,content) VALUES ('$username','$subject','$content')";
}

?>

我做错了什么,并没有将数据存储在我的数据库中。 我的数据库表如下......

CREATE TABLE announcements
(
    id INT UNSIGNED AUTO_INCREMENT,
    author varchar(200),
    subject varchar(200),
    content varchar(3000),
    timestamp int(11) unsigned not null,
    PRIMARY KEY (id,author)
) ENGINE=MyISAM;

2 个答案:

答案 0 :(得分:2)

问题1.您的表单没有名为“username”的输入。因此,if(isset($_POST['username']))永远不会匹配。如果您希望表单中有用户名,则需要输入一个用户名。如果会话设置正确(听起来像是这样),请使用它。问题2.查询中未使用连接(如所述问题)。这是更新的navjot答案。

<?php
   include_once 'header.php';
   $username = mysql_real_escape_string($_SESSION["username"]);
   if(!empty($_POST)){
   if(isset($username)) {
        $subject = mysql_real_escape_string($_POST['subject']);
        $content = mysql_real_escape_string($_POST['content']);
        $sqlinsert = "INSERT INTO announcements (author,subject,content) VALUES ('$username','$subject','$content')";
$execute = mysql_query($sqlinsert) or die(mysql_error());
   }
}
?>

问题3.这是SQL injectible,永远不信任用户输入。问题4. mysql函数已经过时,你应该切换到mysqli或pdo。

虽然这些主题还有很多其他主题。

如果您在将username存储到会话时对其进行清理,而该会话可能没有真正的转义。

答案 1 :(得分:1)

您需要执行查询。试试这个

 <?php

        include_once 'header.php';

        $username = $_SESSION["username"];

        if(isset($_POST['username']))
        {
            $subject = $_POST['subject'];
            $content = $_POST['content'];

            $sqlinsert = "INSERT INTO announcements (author,subject,content) VALUES ('$username','$subject','$content')";
    $execute = mysql_query($sqlinsert) or die(mysql_error());
        }

        ?>