繁体   English   中英

用不同的值更新整列

[英]update entire column with different values

我需要更新tags列,以便每个单元格都有这样的内容:
2-5-1-14-5
或者
3-9-14-19-23
或类似(五个整数,范围为 1-25)。

id列不是从 1-117 连续的,但无论如何最小id是 1,最大 117。

$arr = [];
$str = '';
$id = 1;
for ($x = 1; $x <= 25; $x++){
    array_push($arr, $x);
}
while ($id < 117) {
shuffle($arr);
array_splice($arr, 5, 25);
foreach ($arr as $el){
    $str .= $el . '-';
}
$str = rtrim($str,'-');
$db->query("update posts set tags = '" . $str . "' where id = " . $id);
$id += 1;
}

我不确定如何描述最终结果,但似乎大多数单元格被多次写入。

有什么帮助吗?

将我的评论合并为一段代码:

$full = range(1, 25);
$id   = 1;
while ($id < 117) {
    shuffle($full);
    $section = array_slice($full, 0, 5);
    $str     = implode('-',$section);
    $db->query("update posts set tags = '" . $str . "' where id = " . $id);
    $id += 1;
}

所以$str的重置不再需要了,因为我已经插入了implode()似乎可以正常工作的地方。 其他位的代码可能可以改进。

两个警告:

  • 直接在查询中使用 PHP 变量不是一个好主意。 请使用参数绑定。 这段特定的代码可能不容易受到 SQL 注入的影响,但如果您在其他地方也这样做,它可能会受到影响。
  • 您的数据库似乎没有标准化。 从长远来看,当您扩展应用程序时,这可能会给您带来麻烦。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM