加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何创建包含id列哈希的新列

发布时间:2020-12-13 15:57:12 所属栏目:PHP教程 来源:网络整理
导读:我有一个包含1列id的表.现在我想为我的表创建一个新列,所以我希望新列的数据是id的哈希值.这样的事情: // my table+------+| id |+------+| 1 || 2 || 3 |+------+// I want this table+------+------------+| id | hashed |+------+------------+| 1 | 003
我有一个包含1列id的表.现在我想为我的表创建一个新列,所以我希望新列的数据是id的哈希值.这样的事情:

// my table
+------+
|  id  |
+------+
|  1   |
|  2   |
|  3   |
+------+

// I want this table
+------+------------+
|  id  |   hashed   |
+------+------------+
|  1   |  00320032  |
|  2   |  00330033  |
|  3   |  00340034  |
+------+------------+

应该注意,散列列基于:

hash(‘adler32′,’1’); //输出:00320032

hash(‘adler32′,’2’); //输出:00330033

hash(‘adler32′,’3’); //输出:00340034

现在,我可以这样做吗?

解决方法

在其他可能的方法中,您可以首先获取所有ID,计算每个ID的散列值,然后将可用日期重新插入表中(并避免重复:)

以下是有意义的(没有进行错误检查:)

<?php
// Adding the column named 'hashed'
$mysqli->query('ALTER TABLE your_table ADD COLUMN (`hashed` INT);');

// Retrieving all the 'id's
$result = $mysqli->query('SELECT id FROM your_table;');
$IDs = $result->fetch_all(MYSQLI_ASSOC);
$result->close();

// Assembling the values for a bulk INSERT statement
$values = array();
foreach($IDs as $row) {
    $ID = $row['id'];
    $hashed = hash('adler32',$ID);
    $values[] = "($ID,$hashed)";
}
$values = implode(',',$values);

// Delete to avoid duplicates
$mysqli->query("DELETE FROM your_table;");

// Insert the 'id's and their respective hashed values
$mysqli->query("INSERT INTO your_table (id,hashed) VALUES $values;");

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读