为什么这个gettype在PHP OOP中返回NULL

时间:2018-06-01 14:20:15

标签: php

我正在使用PHP OOP来开发我的项目。基本上我有一个表单,当用户提交它时,它会完美地向表添加一个新行,如下所示:

capture

正如您所看到的,默认情况下,有一个名为insertion的字段设置为 0

然后我在这样的动作代码之后添加了一个基本的重定向语句:

echo "<META HTTP-EQUIV='Refresh' Content='0; URL=blognew.php?blog_id=$blog_id'>";

因此,插入完成后,它会立即将用户重定向到具有唯一blog_id的同一页面,该页面生成如下:

$blog_id = uniqid('blog_post');

然后我在这里添加了另一个if语句(在同一页面上):

if(isset($_GET['blog_id'])){
    $blog_id = $_GET['blog_id'];
    $blogInserted = new Blogs();
    if(($blogInserted->GetInsertion()) == 0){
        echo "
        </br>
        <div class='alert alert-success'>
            <strong>Success!</strong> Your <a href='blogdetails.php?blog_id=$blog_id' target='_blank'>blog</a> has been added successfully.
        </div>
        ";
        $exists = $blogInserted->AlreadyInserted($blog_id);
    }
    if(($blogInserted->GetInsertion()) == 1){
        echo "
        </br>
        <div class='alert alert-warning'>
            <strong>OOPS!</strong> Your blog had been added in the past. But you can view it <a href='blogdetails.php?blog_id=$blog_id' target='_blank'>here</a>.
        </div>
        ";
    }
}

基本上检查网址,如果已经使用自定义blog_id提交了GET方法,则会调用包含方法Blogs的类AlreadyInserted()

 public function AlreadyInserted($blog_id)
    {
        if(!empty($blog_id))
        {
            $new = $this->_db->prepare("UPDATE blogs SET insertion = 1 WHERE blog_id = ?");
            $new->bindParam(1,$blog_id);
            $new->execute();
        }
        else
        {
            header("Location: php/includes/errors/021.php");
            exit();
        }
    }
    public function GetInsertion()
    {
        return $this->insertion;
    }

它的作用是更新表并将现有行的insertion设置为 1

通过这种方式,我可以检查$blogInserted->GetInsertion()) == 0是否为真。

如果设置为 0 ,屏幕上会弹出一条成功消息,表明插入过程已成功完成。

如果$blogInserted->GetInsertion()) == 1为真,则会显示警告消息。

这意味着如果用户刷新具有相同blog_id的页面,则成功消息将消失,并且将显示警告消息。因为表格中的insertion字段已设置为 1 而非 0

但问题是,它只会一直显示成功消息。虽然insertion字段甚至设置为 1

我检查了回显gettype($blogInserted->GetInsertion()),并以某种方式设置为 NULL

这意味着此GetInsertion()方法存在一些错误,因为它应返回 0 1

我的代码的哪一部分被错误地写成了这件事发生了?你可以帮帮我吗?

  

注意:我没有添加表单的动作代码和html代码   他们工作正常,包括他们在这里是不必要的。

0 个答案:

没有答案