【发布时间】:2019-05-31 20:15:39
【问题描述】:
所以我正在创建一个管理用户的系统,并在永久删除记录之前实施了一个“回收站”作为健全性检查。
我通过在我的表中添加一个名为 deleted 的 bool (tinyint) 来做到这一点。
这是我获取记录的方法:
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 foreach ($users as $user) { ?>
<?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 } ?>
<?php } ?>
h() 是 htmlspecialchars() 的快捷方式,() 是 urlencode() 的快捷方式。
所以基本上,它能够找到所有已删除的用户,但不能找到所有未删除的用户。 有人可以帮帮我吗?我会提供任何必要的额外信息。
【问题讨论】:
-
认为您需要使用 1/0 而不是 true/false 进行搜索。 (
.($deleted?1:0);可以做到)
标签: php mysql oop model-view-controller