在查询之前设置最后一个ID的值

时间:2015-12-01 21:42:26

标签: php mysql sql

我想在插入查询之前,将变量的值设置为在数据库中插入的最后一个ID。

目前我有以下代码:

// Construct
public function __construct($content, $emotion, $conn)
{
    $this->content = $content;
    $this->emotion = $emotion;
    $this->post = 
        "<div id=\'post\'>
            <div id=\'postContent\'>
                <p><b>I\'m $this->emotion because</b> $this->Id $this->content<span class=\'emot\'id=\'$this->emotion\'></span></p>
            </div>
            <div id=\'postInfo\'>
                <span class=\'postRelate\' title=\'Click to relate +1\'><p><b>relate</b> (0)</p></span>
                <span class=\'postSubmitted\'><p>submitted X minutes ago</p></span>
            </div>
        </div>";     
}

// Confirm booking (update database) function
public function insert_userPost($conn) 
{
    if($this->content != "")
    {   
        // SQL INSERT command
        $sql = ("INSERT INTO userPost (content, submitted, emotion)
                 VALUES ('$this->post', NOW(), '$this->emotion')");
        $this->Id = $conn->insert_id;
        if ($conn->query($sql) === TRUE) 
        {
            header('Location: feed.php?filter=all&page=1');
        } 
        else 
        {
            echo "Error: " . $sql . "<br>" . $conn->error;
        }
    }
    else
    {
        header('Location: post.php');
    }
}

在构造中,我将变量$ post设置为包含$ this-&gt; Id变量的div。

在insert_userPost()函数中,我正在插入一个包含$ this-&gt; post的查询,另一个将Id设置为插入数据库的最后一个ID。我知道它已成功从数据库中获取ID。但是,由于我在插入之前明显获得了Id 的值,因此在插入后它没有正确地出现在$ post上。

1 个答案:

答案 0 :(得分:0)

您无法从数据库中获取ID,除非您确实插入了一行。很难预测MySQL使用的是什么ID。

您必须在构造中添加帖子以获取ID以供参考。您可以在数据库中将新列设置为posted=falsesubmitted=NOW()

insert_userPost()中设置posted=true并删除posted=false WHERE submitted<DATE_SUB(NOW(), INTERVAL -1 DAY)的所有行。

另一种解决方案是将所有内容临时存储在没有ID的会话变量中,并从会话中存储/获取更改。发布时,将其添加到数据库中!