因此,当我使用我的代码时,它会从我的数据库中打印出超过1个用户。
我只想打印一个用户,我试图做我所知道的关于获取对象的所有内容。
有人可以帮助我吗?
$result = $mysqli->query("SELECT * FROM cms_users ORDER BY id ASC LIMIT 100");
while($row = $result->fetch_object()) {
echo '
<aside id="right">
<div id="main_sep"></div>
<div id="content_ajax"><article>
<h1 class="top">User panel</h1>
<section class="body">
<section id="ucp_top">
<a href="http://causticwow.net/home2/ucp/avatar" id="ucp_avatar">
<div>Change avatar</div>
</a>
<section id="ucp_info">
<aside>
<table width="100%">
<tbody><tr>
<td width="10%"><img src="images/icons/user.png"></td>
<td width="40%">Nickname</td>
<td width="50%">
<a href="http://causticwow.net/home2/ucp/settings" data-tip="Change nickname" style="float:right;margin-right:10px;"><img src="images/icons/pencil.png" align="absbottom"></a>
<a href="profile/1989" data-tip="View profile"> '.$row->Nickname.' </a>
</td>
</tr>
<tr>
<td width="10%"><img src="images/icons/world.png"></td>
<td width="40%">Location</td>
<td width="50%">
<a href="http://causticwow.net/home2/ucp/settings" data-tip="Change location" style="float:right;margin-right:10px;"><img src="images/icons/pencil.png" align="absbottom"></a>
'.$row->Location.'
</td>
</tr>
<tr>
<td width="10%"><img src="images/icons/plugin.png"></td>
<td width="40%">Expansion</td>
<td width="50%">
<a href="http://causticwow.net/home2/ucp/expansion" data-tip="Change expansion" style="float:right;margin-right:10px;"><img src="images/icons/cog.png" align="absbottom"></a>
'.$row->Expansion.'
</td>
</tr>
<tr>
<td width="10%"><img src="images/icons/award_star_bronze_1.png"></td>
<td width="40%">Account rank</td>
<td width="50%">'.$row->Rank.'
</td>
</tr>
</tbody></table>
</aside>
<aside>
<table width="100%">
<tbody><tr data-tip="Earn voting points by voting for the server">
<td width="10%"><img src="images/icons/lightning.png"></td>
<td width="40%">Voting points</td>
<td width="50%">'.$row->VP.'</td>
</tr>
<tr data-tip="Earn donation points by donating money to the server">
<td width="10%"><img src="images/icons/coins.png"></td>
<td width="40%">Donation points</td>
<td width="50%">'.$row->DP.'</td>
</tr>
<tr>
<td width="10%"><img src="images/icons/shield.png"></td>
<td width="40%">Account status</td>
<td width="50%">'.$row->AccStatus.'</td>
</tr>
<tr>
<td width="10%"><img src="images/icons/date.png"></td>
<td width="40%">Member since</td>
<td width="50%">'.$row->created.'</td>
</tr>
</tbody></table>
</aside>
</section>
<div class="clear"></div>
</section>
<div class="ucp_divider"></div>
<section id="ucp_buttons">
<a href="http://causticwow.net/home2/vote" style="background-image:url(images/vote_panel.jpg)"></a>
<a href="http://causticwow.net/home2/donate" style="background-image:url(images/donate_panel.jpg)"></a>
<a href="http://causticwow.net/home2/store" style="background-image:url(images/item_store.jpg)"></a>
<a href="http://causticwow.net/home2/ucp/settings" style="background-image:url(images/account_settings.jpg)"</a>
<a href="http://causticwow.net/home2/ucp/expansion" style="background-image:url(images/change_expansion.jpg)"></a>
<a href="http://causticwow.net/home2/teleport" style="background-image:url(images/teleport_hub.jpg)"></a>
<div class="clear"></div>
</section>
<div class="ucp_divider"></div>
</section>
</article></div>
</aside>
<div class="clear"></div>
</div>
<footer>
<a href="http://raxezdev.com/fusioncms" id="logo" target="_blank"></a>
<p>© Copyright 2014 Admin Frozty</p>
<p id="design"> <a target="_new" href=""></a></p>
</footer>
'; }
当它打印出来时,它首先打印一个应该是它的位置,然后是另一个打印在页脚下面。
答案 0 :(得分:4)
LIMIT 100
最多会返回100行。
因此,如果您更改为LIMIT 1
,您将只获得一个结果。
此外,使用while会迭代所有结果。 如果您确定只有一行,请执行以下操作:
$row = $result->fetch_object();
答案 1 :(得分:1)
使用mysqli的以下SQL语句
$result = $mysqli->query("SELECT * FROM cms_users ORDER BY id ASC LIMIT 100");
获取cms_users的前100行
如果您只想输出或使用单行,请将LIMIT更改为1
$result = $mysqli->query("SELECT * FROM cms_users ORDER BY id ASC LIMIT 1");
此外,您已经使用您在查询中输入的条件解析了每个行的while循环(在这种情况下,除了输出顺序之外没有任何条件)。
以下评论的附录:
如果要添加参数 - 请参阅mysqli.prepare()语句。
您要创建的查询类似于:
SELECT * FROM cms_users WHERE user_id = ? ORDER BY id ASC LIMIT 1
哪里有“?”将是user_id(在您的情况下 - 5)。
答案 2 :(得分:0)
•如果您只想要一个严格的结果,那么请使用LIMIT 1
代替LIMIT 100
。您也可以将while($row = $result->fetch_object())
替换为$row = $result->fetch_object();
,因为您只有一行结果。
•如果您的问题是下一个用户打印在桌子外面,那么您应该:
// Print the begining HTML code, with opening <tbody> tag
echo('<aside><!--...--><tbody>');
$result = $mysqli->query("SELECT * FROM cms_users ORDER BY id ASC LIMIT 100");
while($row = $result->fetch_object())
{
// print HTML rows for data
echo('<tr><!-- nickname, and others... -->
<!-- ... -->
<a href="profile/1989" data-tip="View profile"> '.$row->Nickname.'</a>
<!--- ... -->
<tr>
<td width="10%"><img src="images/icons/award_star_bronze_1.png"></td>
<td width="40%">Account rank</td>
<td width="50%">'.$row->Rank.'
</td>
</tr>
');
}
// Print closing tags
echo('
</tbody></table><!-- ... -->
</footer>');
(缩写以便于阅读)。
在那里,您将打印一次表格开始标记,根据MySQL结果打印几行,然后打印一次表格结束标记。