PHP方法没有返回

时间:2017-04-04 15:05:01

标签: php

你好,

我正在努力研究这个类,我应该保存函数addLikes()完成的操作。但是,save()方法不返回bool。它没有返回任何东西。我在控制器中尝试了一个var_dump,没有效果。

Controller.php功能

public function updateLike()
{
    $id = $_POST['id'];
    $article = new Article($id);

    if($article->exists){
        $article->addLikes();
        $article->save();
    }

}

Model.php addLikes()

  public function addLikes() {
    $this->likes += 1;
}

Model.php save()

 public function save()
{
    $prepareQuery = 'UPDATE `articles` SET ';
    foreach( $this->data as $key => $value ) {
        $prepareQuery .= $key . ' = ' . $value . ', ';
    }
    $prepareQuery .= 'WHERE `id` = :id';

    $stmt = $this->DB()->conn()->prepare($prepareQuery);
    $stmt->execute([':id' => $this->id]);
    return !!$stmt->rowCount();
}

我从构造函数中获取ID,并且我获得了所有其他值。问题在于储蓄。怎么了?为什么不归还它呢?为什么不能正确保存。

我正在解决这个问题一段时间了。修复了提取问题,但现在它根本没有返回。

1 个答案:

答案 0 :(得分:0)

我不知道你班级中的$data变量内容是什么。它可能有一些错误,但SQL查询中有一个明显的错误。您的查询最后可能如下:

UPDATE `articles` SET Col1 = 4, Col2 = 5, WHERE `id` = 5

如您所见,最后一个元素有一个不需要的逗号,因此您必须删除最后一个逗号才能更正它。您可以按如下方式修改model.php

public function save()
{
    $prepareQuery = 'UPDATE `articles` SET ';
    foreach( $this->data as $key => $value )
        $prepareQuery .= $key . ' = ' . $value . ','; //I deleted space after comma
    $prepareQuery = substr($prepareQuery, 0, -1);  //this deletes the last comma
    $prepareQuery .= ' WHERE `id` = :id'; //I inserted a space at beginning
    $stmt = $this->DB()->conn()->prepare($prepareQuery);
    $stmt->execute([':id' => $this->id]);
    return !!$stmt->rowCount();
}