我有一个快速浏览登录用户配置文件的页面,以及一些编辑功能,所以为了避免混淆,我将发布所有代码,只需忽略html。
在代码的开头,我正在检索用户信息,然后将其存储到名为$ row的数组中。稍后在代码中,我正在从单独的表中检索行,并且我想将它们存储到数组中($ postRow)。但我只是通过阅读得出结论,你每个页面只能执行一个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');
?>
答案 0 :(得分: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()
。