【发布时间】:2014-08-18 11:43:35
【问题描述】:
我正在尝试从下表的 codes 列中返回 5 个未使用的值,然后将相关行中的 used 设置为 1。
|--- codes ---| | used |
| FIomQVu71l | | 0 |
| 4TW0lwLWNK | | 0 |
| SjzLB2Shzr | | 0 |
| uTWJrtCgh4 | | 0 |
| tLwOwYGz5R | | 0 |
| byEhzYMWJG | | 0 |
| XFBmGzDGIR | | 0 |
我已经设法让代码从 codes where used = 0 输出 5 个随机值
<?php
$sql = "SELECT codes FROM code_table WHERE used =0 ORDER BY rand() LIMIT 5";
$records = mysql_query($sql, $connection);
while($rows = mysql_fetch_array($records)){
echo "Code: " . $rows['codes'] . "<br />";
?>
但现在我不知道如何更新每个输出 codes 的 used 值。我所有的尝试都将used 的每个实例更新为1,而不仅仅是与5 codes 关联的实例
【问题讨论】:
-
为什么要先回码?
-
完整代码基本上采用用户输入的值,检查它是否存在于一个表中,然后从另一个表向用户显示 5 个随机代码 - 然后我需要将这些代码标记为
used以便当下一个用户输入一个值时,他们给出的 5 个随机代码是从那些未标记为已使用的代码中提取出来的。 -
。 .我会以不同的方式处理逻辑。我将首先更新要使用的表——存储唯一的用户或会话标识符,而不仅仅是一个标志。然后我会取回用户“保留”的行。
-
另外,
ORDER BY rand()可能会对性能产生不利影响。你应该看看alternatives