Bei Verwendung des Fetch-Objekts in PHP kann die While-Schleife nicht verwendet werden, um wirksam zu werden
P粉803444331
2023-08-16 11:49:58
<p>Ich erstelle eine Anmeldeseite für den Administrator, aber die While-Schleife im PHP-Code funktioniert nicht. Ich lasse den Code hier (Entschuldigung für das Spanisch im Code) </p>
<pre class="brush:php;toolbar:false;">//Eine Verbindung erstellen
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Verbindung prüfen
if (!$conn) {
echo „Beim Herstellen der Verbindung zum Server ist ein Fehler aufgetreten.“;
}
$username = $_POST["username"];
if ($username != "") {
$password = $_POST["password"];
$accountLevel = $_POST["accountLevel"];
$content = $_POST["content"];
$sql = "SELECT passwort, accountLevel FROM `accounts1` WHERE username='".$username."'";
$result = mysqli_query($conn, $sql);
while ($post = $result->fetch_object()) {
if ($post->password != $password) {
echo „Falsches Passwort“;
}else if ($post->accountLevel != $accountLevel) {
echo „Fehler: Veröffentlichung nicht möglich. Fehler auf Kontoebene.“;
}anders{
$sql = "INSERT INTO `blogposts`(`title`, `contentHTML`, `publishDate`, `commentSection`, `likes`, `dislikes`, `publisher`, `selector`) VALUES ('','". $_POST['content']."','".$_POST['publishDate']."','',0,0,'".$_POST['username']."','')" ;
/*$fetchObj = mysqli_fetch_object($QueryResult);
var_dump($fetchObj);*/
Echo „gesendet“;
}
}
}anders{
echo „Kein Benutzer angegeben“;
}</pre>
<ul>
<li><p>Gibt es eine Möglichkeit, die while-Schleife durch eine einfachere Zuweisung zu ersetzen (da es sich um eine Anmeldeseite handelt und nur ein Konto überprüft)</p>
</li>
<li><p>Warum funktioniert die while-Schleife nicht? Ich habe den gleichen Code schon einmal auf einer anderen Seite verwendet und er hat einwandfrei funktioniert und ich habe keine logischen Fehler gesehen. </p>
</li>
</ul>
<p>Dies ist eine Anfrage, die von einem Skript mit einer Funktion gesendet wird, und ich verwende eine Anfrage an eine PHP-Seite. Danach liest es das Echo und zeigt es auf dem Bildschirm an. (Nur für den Fall, dass jemand diese Informationen benötigt)</p>
而不是使用
while
循环,只需一次捕获fetch_object()
,并使用if
测试是否得到真值结果。您还应该使用预处理语句,我在下面展示了如何做。
您不应该存储明文密码,应该使用
password_hash()
和password_verify()
。我没有在下面显示该代码(它将需要对您的注册脚本进行相应更改)。