Lors de l'utilisation de l'objet fetch en PHP, la boucle while ne peut pas être utilisée pour prendre effet
P粉803444331
2023-08-16 11:49:58
<p>Je crée une page de connexion pour l'administrateur, mais la boucle while dans le code php ne fonctionne pas. Je vais laisser le code ici (désolé pour l'espagnol dans le code) </p>
<pre class="brush:php;toolbar:false;">//Créer une connexion
$conn = mysqli_connect ($ nom du serveur, $ nom d'utilisateur, $ mot de passe, $ nom de base de données);
// Vérifier la connexion
si ($conn) {
echo "Une erreur s'est produite lors de la connexion au serveur.";
}
$nom d'utilisateur = $_POST["nom d'utilisateur"];
si ($nom d'utilisateur != "") {
$mot de passe = $_POST["mot de passe"];
$accountLevel = $_POST["accountLevel"];
$contenu = $_POST["contenu"];
$sql = "SELECT mot de passe, accountLevel FROM `accounts1` WHERE username='".$username."'";
$result = mysqli_query($conn, $sql);
while ($post = $result->fetch_object()) {
if ($post->mot de passe != $mot de passe) {
echo "Mauvais mot de passe" ;
}else if ($post->accountLevel != $accountLevel) {
echo "Erreur : publication impossible. Erreur au niveau du compte.";
}autre{
$sql = "INSÉRER DANS `blogposts`(`title`, `contentHTML`, `publishDate`, `commentSection`, `likes`, `dislikes`, `publisher`, `selector`) VALEURS ('','". $_POST['content']."','".$_POST['publishDate']."','',0,0,'".$_POST['username']."','')" ;
/*$fetchObj = mysqli_fetch_object($QueryResult);
var_dump($fetchObj);*/
echo "envoyé" ;
}
}
}autre{
echo "Aucun utilisateur spécifié" ;
}</pré>
<ul>
<li><p>Existe-t-il un moyen de remplacer la boucle while par une affectation plus simple (puisqu'il s'agit d'une page de connexion et qu'elle ne vérifie qu'un seul compte)</p>
≪/li>
<li><p>Pourquoi la boucle while ne fonctionne-t-elle pas ? J'ai déjà utilisé le même code sur une autre page et cela a parfaitement fonctionné et je n'ai vu aucune erreur logique. </p>
≪/li>
</ul>
<p>Il s'agit d'une requête envoyée à partir d'un script avec une fonction et j'utilise une requête vers une page Php. Après cela, il lit l'écho et l'affiche à l'écran. (Juste au cas où quelqu'un aurait besoin de ces informations)</p>
Au lieu d'utiliser
while
循环,只需一次捕获fetch_object()
,并使用if
pour tester si vous obtenez un vrai résultat.Vous devez également utiliser des instructions préparées, je montre comment procéder ci-dessous.
Vous ne devez pas stocker de mots de passe en texte clair, vous devez utiliser
password_hash()
和password_verify()
. Je ne montre pas ce code ci-dessous (cela nécessitera des modifications correspondantes dans votre script d'inscription).