-1
votes

Mise à jour de la colonne de base de données SQL met à jour toutes les lignes avec les mêmes données

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";
}


0 commentaires

3 Réponses :


1
votes

Vous utilisez le script $ sql = "Mettre à jour le jeu de paramètres de connexion = '$ hashed_password'"; qui manque le clause, définitivement toutes les données de Votre table n'aura que 1 type de mot de passe haché

i suggère xxx


0 commentaires

0
votes

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. < Pré> xxx

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.


0 commentaires

0
votes

Pour mettre à jour, nous devons utiliser une clause WHERE. Dans votre code, il n'y a pas de clause où. xxx

il devrait être comme xxx


0 commentaires