你好,
我正在努力研究这个类,我应该保存函数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,并且我获得了所有其他值。问题在于储蓄。怎么了?为什么不归还它呢?为什么不能正确保存。
我正在解决这个问题一段时间了。修复了提取问题,但现在它根本没有返回。
答案 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();
}