J'utilise actuellement la PHP suivante pour sélectionner des mots de passe en texte de ma base de données, utilisez BCRYPT pour les hacher, puis mettez-les sur le tableau:
PHP: P>
$select = "SELECT Password
FROM Login";
$result = $conn->query($select);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "Password: " . $row["Password"]. "<br>";
$hashed_password = password_hash($row["Password"], PASSWORD_DEFAULT);
$sql = "UPDATE login SET Password='$hashed_password' ";
mysqli_query($conn,$sql);
echo " Succesfully Updated. <br>";
}
} else {
echo "0 results";
}
3 Réponses :
Vous utilisez le script i suggère p> $ sql = "Mettre à jour le jeu de paramètres de connexion = '$ hashed_password'"; code> qui manque le où code> clause, définitivement toutes les données de Votre table n'aura que 1 type de mot de passe haché
Dans votre requête, vous obtenez tous les mots de passe, mais vous n'obtenez pas la clé primaire de chaque ligne. Comment saurez-vous quelle ligne à mettre à jour? Vous devez également obtenir la clé primaire pour la table et utiliser cela pour mettre à jour la ligne.
supposant que votre table a une ligne nommée «ID» qui est la clé primaire. EM> P> < Pré> xxx pré> Vous voudrez peut-être envisager de trouver un moyen de savoir si le mot de passe est déjà mis à jour et ne mettez à jour que ces lignes non mises à jour. P> p>
Pour mettre à jour, nous devons utiliser une clause WHERE. Dans votre code, il n'y a pas de clause où. il devrait être comme p>