Php 我正在尝试为所有用户生成一个唯一的哈希
我试图为数据库中的所有用户生成一个唯一的哈希;这是我的密码:Php 我正在尝试为所有用户生成一个唯一的哈希,php,mysql,database,mysqli,database-design,Php,Mysql,Database,Mysqli,Database Design,我试图为数据库中的所有用户生成一个唯一的哈希;这是我的密码: <?php include("php/connect.php"); $sql = "SELECT id FROM user"; while ($id = mysqli_fetch_assoc(mysqli_query($conn, $sql))) { $new_hash = md5(uniqid(rand(), TRUE)); $sql2 = "INSERT INTO user (hash) VALU
<?php
include("php/connect.php");
$sql = "SELECT id FROM user";
while ($id = mysqli_fetch_assoc(mysqli_query($conn, $sql))) {
$new_hash = md5(uniqid(rand(), TRUE));
$sql2 = "INSERT INTO user (hash) VALUE ('$new_hash') WHERE id = $id['id']";
mysqli_query($conn, $sql2);
}
?>
关于这个问题:
$sql2 = "INSERT INTO user (hash) VALUE ('$new_hash') WHERE id = $id['id']";
不使用子句,does,as does
然而,我不知道你为什么要这么做。使用设置为“自动增量”的列应该足以拥有唯一的id
然而,如果这是您想要做的,那么您将需要使用上面显示的方法之一
- 顺便说一下,这会给你带来一个语法错误
我认为您在这里的意思是更新
user
表的hash
字段。如果你真的不在乎散列是什么,只要它们是准随机的,那么就这样做:
UPDATE user SET hash=SHA2(UUID())
如果您希望它们以加密方式随机、完全不可预测,则需要使用比函数更好的随机数据生成器。警告:使用
mysqli
时,应使用and将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。永远不要将$\u POST
、$\u GET
或任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能非常有害。MD5确实不值得使用。至少是绝对有用的。读这篇文章的方式不是codeigniter方式,你不需要更新
而不是插入
?
if(!$sql2){
echo "Error: " . mysqli_error($conn);
}
UPDATE user SET hash=SHA2(UUID())