如何将日期和user_id插入mysql

时间:2013-10-04 08:07:05

标签: php mysql sql

我是PHP和MySQL的新手。我尝试制作留言板,用户可以在墙上发布一些消息,每个登录用户都可以阅读。

现在当有人添加消息时,不会在表author_id和date_added中写入。显示结果时我需要它们。

这是new.php

if(isset($_POST['formSubmit']))
{
    $errorMessage = "";

    if(empty($_POST['formTitle'])) 
    {
        $errorMessage .= "<li>Doesn't have title!</li>";
    }
    if(empty($_POST['formContent'])) 
    {
        $errorMessage .= "<li>The field for content is empty!</li>";
    }

    if(empty($errorMessage)) 
    {
        $db = mysql_connect("localhost","root","");
        if(!$db) die("Error connecting to MySQL database.");
        mysql_select_db("homework3" ,$db);

        $sql = "INSERT INTO massages (author_id, date_added, title, content) VALUES ('$_POST[author_id]', '$_POST[date_added]', '$_POST[formTitle]', '$_POST[formContent]')";
        mysql_query($sql);

        header("Location: index.php");
        exit();
    }
}

<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
<div><label for='formTitle'>Title<input type="text" name="formTitle" value=""   style="width: 350px;"></label></div></br>

<div><label for='formContent'>Content</div><textarea name="formContent" style="width: 344px; height: 100px;"></textarea>

<input type="submit" class="formbutton" name="formSubmit" value="Send"/>

</form>

编辑: 我不知道你是否需要这个,但这就是我显示按摩的方式:

$sql = 'SELECT username, msg_id, title, content, date_added FROM massages as m, users  as u WHERE author_id = user_id ORDER BY m.date_added DESC';

  $result = mysqli_query($link, $sql);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
    $real_date = date('d.m.Y', $row['date_added']);
    echo '<table>
   <tr>
   <td>' . $row['msg_id'] . '. ' . $row['title'] . '</td>
   </tr>
   <tr>
     <td>' . $row['content'] . '</td>
   </tr>
   <tr>
<td>By<span style="color: #CC0033;">' . $row['username'] . '</span> on   <span style="color: #CC0033;">' . $real_date . '</span></td></br>
</tr>
</table>';
}

}

4 个答案:

答案 0 :(得分:2)

当作者登录时,将author_id存储在会话中。

$author_id=$_SESSION['username'];

然后将其存储在数据库中。

$sql = "INSERT INTO massages (author_id, date_added, title, content) VALUES ('$author_id', 'NOW()', '$_POST[formTitle]', '$_POST[formContent]')";

注意

不要忘记在顶部开始会议

<?php
    session_start();
    // then your all code

答案 1 :(得分:1)

答案 2 :(得分:1)

在您的表中,将author_id更改为自动递增,无需在INSERT查询中添加它。

尝试以下更改:

$date_added = date('Y-m-d');

$sql = "INSERT INTO massages (`date_added`, `title`, `content`) VALUES ( '$date_added', '$_POST[formTitle]', '$_POST[formContent]')";
mysql_query($sql);

答案 3 :(得分:0)

如评论中所述,您应该避免使用mysql_*命令,但问题出在以下几行:

$sql = "INSERT INTO massages (author_id, date_added, title, content) VALUES ('$_POST[author_id]', '$_POST[date_added]', '$_POST[formTitle]', '$_POST[formContent]')";

为了在数组中嵌入数组变量,你必须用大括号包围它,例如。

"{$_POST['author_id']}"

但是你不应该在你的例子中这样做,因为它会让你对mysql注入攻击敞开大门。处理此问题的旧方法是使用mysql_escape_string()来转义每个已发布的变量,但处理此问题的更好方法是使用PDO数据对象,例如http://www.php.net/manual/en/pdostatement.bindvalue.php