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;"); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |