PHP でフェッチ オブジェクトを使用する場合、while ループを使用して有効にすることはできません
P粉803444331
P粉803444331 2023-08-16 11:49:58
0
1
536
<p>管理者用のログインページを作成していますが、PHP コードの while ループが機能しません。コードをここに残しておきます (コードにスペイン語が含まれていて申し訳ありません) </p> <pre class="brush:php;toolbar:false;">//接続を作成する $conn = mysqli_connect($servername, $username, $password, $dbname); // 接続を確認する if (!$conn) { echo "サーバーへの接続中にエラーが発生しました。"; } $ユーザー名 = $_POST["ユーザー名"]; if ($ユーザー名 != "") { $パスワード = $_POST["パスワード"]; $accountLevel = $_POST["accountLevel"]; $content = $_POST["コンテンツ"]; $sql = "SELECT パスワード、アカウントレベル FROM `accounts1` WHERE username='".$username."'"; $result = mysqli_query($conn, $sql); while ($post = $result->fetch_object()) { if ($post->パスワード != $パスワード) { エコー「パスワードが間違っています」; }else if ($post->accountLevel != $accountLevel) { echo "エラー: 公開できません。アカウント レベルのエラーです。"; }それ以外{ $sql = "INSERT INTO `blogposts`(`title`, `contentHTML`, `publishDate`, `commentSection`, `likes`, `dislikes`, `publisher`, `selector`) VALUES ('','". $_POST['コンテンツ']."','".$_POST['公開日']."','',0,0,'".$_POST['ユーザー名']."','')" ; /*$fetchObj = mysqli_fetch_object($QueryResult); var_dump($fetchObj);*/ エコー「送信済み」; } } }それ以外{ echo "ユーザーが指定されていません"; }</pre>
    <li><p>while ループをより単純な割り当てに置き換える方法はありますか (これはログイン ページであり、1 つのアカウントのみをチェックするため)</p> </li> <li><p>while ループが機能しないのはなぜですか?以前に別のページで同じコードを使用したことがありますが、まったく問題なく動作し、論理エラーは見られませんでした。 </p> </li> </ul> <p>これは関数を含むスクリプトから送信されたリクエストであり、Php ページへのリクエストを使用しています。その後、エコーを読み取り、画面に表示します。 (この情報が必要な方がいる場合に備えて)</p>
P粉803444331
P粉803444331

全員に返信(1)
P粉200138510

while ループを使用する代わりに、fetch_object() を一度キャプチャし、if を使用して真の結果が得られるかどうかをテストします。

プリペアドステートメントも使用する必要があります。その方法を以下に示します。

クリアテキストのパスワードを保存せず、password_hash()password_verify() を使用する必要があります。以下ではそのコードは示しません (登録スクリプトに対応する変更が必要になります)。

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!