0

ログオンしているユーザーのプロフィールといくつかの編集機能を簡単にまとめたこのページがあるので、混乱を避けるために、HTML は無視してすべてのコードを投稿します。

コードの最初で、ユーザー情報を取得し、それを $row という配列に格納しています。コードの後半で、別のテーブルから行を取得していて、それらを配列 ($postRow) にも格納したいと考えています。しかし、コードを実行せずにページごとに 1 つの SQL クエリしか実行できないことを読んだだけで、率直に言って理解できません。その問題に関して見つけた唯一のコードは、情報を直接ページに出力しました。両方を配列に格納する方法が見つかりませんでした。この問題に関して誰かが私を助けることができますか? 私は本当に岩と難しい場所の間にいます。

<?php
    include('header.php');
    if (isset($_SESSION['username'])){
        require 'connect.php';

        $user = $_SESSION['username'];

        $query = mysqli_query($connect, "SELECT * FROM users WHERE username='$user';", MYSQLI_USE_RESULT);
        $row = mysqli_fetch_assoc($query);
        ?>
        <h4>BlogHub > Profile > <?php echo $row['fname']." ".$row['lname']; ?></h4>
        <div id="profileAva">
            <img src="<?php echo $row['avatar']; ?>" />
        </div>
        <h5 id="infoDisp" style="margin:3px;"><?php echo "ID #".$row['ID']." - ".$row['fname']." ".$row['lname']." - ".$row['username']." - ".$row['email']." - ".$row['posts']." Posts"; ?></h5>
        <?php
        $id = $row['ID'];
        $recentPost = mysqli_query($connect, "
        SELECT * 
        FROM  `blog_posts` 
        WHERE poster_id='$id'
        LIMIT 1
        ", MYSQLI_USE_RESULT);
        $postRow = mysqli_fetch_assoc($recentPost);
        ?>
        <p></p>
        <div id="changeAva">
            <button class="cancelQuery">x</button>
            <center>
            <form style="padding-top:20px;" class="boxI" enctype="multipart/form-data" action="changeAva.php" method="POST">
                <input style="padding-bottom:15px;" type="file" value="Choose a Avatar" name="file"/><br />
                <button type="Submit">Submit</button>
            </form>
            </center>
        </div>
        <div id="changeInfoBox">
            <button class="cancelQuery">x</button>
            <center>
                <form action="changeInfo.php" method="POST">
                    First Name: <input type="text" name="fname" value="<?php echo $row['fname']; ?>" /><br />
                    Last Name: <input type="text" name="lname" value="<?php echo $row['lname']; ?>" /><br />
                    Email: <input type="text" name="email" value="<?php echo $row['email']; ?>" /><br />
                    <button type="submit">Submit</button>
                </form>
            </center>
        </div>
        <?php
    }
    else {
        echo "<center><p>You need to be logged in to view this page.</p></center>";
    }
    include('footer.php');
?>
4

1 に答える 1

0

スクリプトの実行中に実行されるクエリの数に制限はありません。ただし、単一のクエリでこの情報を取得できない理由はありません。これを行うには、JOIN を使用します。

これは次のようになります。

SELECT bp.*
FROM users AS u
INNER JOIN blog_posts AS bp
  ON u.id = bp.poster_id
WHERE u.username = '?'

他の回答へのコメントで言及した特定の問題はmysql_free_result()、次のクエリを作成する前に電話する必要があるためです。

于 2013-08-26T22:16:25.193 に答える