因此,我制作了一个管理用户的系统,并在永久删除记录之前实现了一个“回收站”作为健全性检查。
我通过添加一个名为 deleted
到我的table上去。
这是我获取记录的方法:
static public function select_all($deleted = null) {
$query = "SELECT * FROM ".static::$db_table;
if ($deleted) {
$query .= " WHERE deleted = ".$deleted;
}
return static::sql_query($query);
}
``` `$db_table` 在类中定义,并且 `sql_query($query)` 是实际执行查询的方法,当我在每个类和每个查询中使用它们时,它们没有任何问题。
我是这样调用这个方法的:
未删除:
$users = User::select_all(false);
预期输出:具有 `deleted` 设置为0
实际输出:每条记录
删除:
$users = User::select_all(true);
预期输出:具有 `deleted` 设置为1
实际输出:所有记录 `deleted` 设置为1
我是这样显示结果的:
<?php if ($user->id != $_SESSION['user_id']) { ?>
<tr>
<td><?= h($user->name()); ?></td>
<td><?= h($user->email); ?></td>
<td><?= h($user->username); ?></td>
<td><?= h($user->status()); ?></td>
<td>
<a href="<?= url('users/details.php?id='.h(u($user->id))); ?>">Details</a>
</td>
</tr>
<?php } ?>
``` h()
是一条捷径 htmlspecialchars()
和 ()
是一条捷径 urlencode()
.
所以基本上,它可以找到所有删除的用户,但不是所有未删除的用户。有人能帮我吗?我将提供任何必要的补充资料。
1条答案
按热度按时间cotxawn71#
if语句阻止您将条件添加到sql。改用if/else:
更新如果您希望它与没有删除标志的表一起工作,那么您可以添加一个检查
null
. 查看更新的代码。。。