【发布时间】:2017-02-23 00:26:58
【问题描述】:
我有一个填充了以下列的“矩阵”表。
matrix_id, user_id, position_1, position_2, position_3
1 1 1982 2251 5841
2 2 6204 0 0
3 3 0 0 0
4 4 0 0 0
我基本上想做以下事情。
- 查找 user_id 最低且位置为空的行。
- 在上面的示例中,这将是 user_id 2 和 position_2。
- 我用查询更新了行。
- 然后我继续下一个空仓。由于 user_id 2 仍然有一个空的 position_3,我再次使用查询更新该行。
- 由于该行已完成,我将转到下一个具有空位的最高 user_Id。在这种情况下,它是 user_id 3,然后是 user_id 4。
如果我知道 user_id 是什么,我知道我可以完成以上所有操作。但是假设在这种情况下,我不知道 user_ids 是什么。那么查询会是什么样子?
这是我目前所拥有的。
$find_user = $db->prepare("SELECT * FROM matrix WHERE user_id > :user_id");
$find_user->bindValue(':user_id', 0);
$find_user->execute();
$result_user = $find_user->fetchAll(PDO::FETCH_ASSOC);
if(count($result_user) > 0) {
foreach($result_user as $row) {
$matrix_id = $row['matrix_id'];
$user_id = $row['user_id'];
$position_1 = $row['position_1'];
$position_2 = $row['position_2'];
$position_3 = $row['position_3'];
}
} else {
$errors[] = 'User Id not found in Matrix.';
}
$update_user = $db->prepare("UPDATE matrix SET position_2 = :position_2 WHERE user_id = :user_id");
$update_user->bindValue(':position_2', 1564;
$update_user->bindParam(':user_id', $user_id);
if($update_user->execute()) {}
【问题讨论】:
-
您认为 EMPTY 是什么?
''或NULL或其他什么? -
我认为空为“0”。桌子就是这样。所有空位自动列为 0。我应该更新我的原始表格,以免造成混乱。
-
所有新值都设置为
1564 -
最好的建议是修复这个损坏的设计
-
不,所有新值都是唯一的。 “草莓”,请告知我该如何修复这个损坏的设计?