[英]MySQL query doesn't show all the records correctly
查詢正在針對我的數據庫運行,以按隨機順序獲得3條記錄。 問題在於,有時它顯示所有3條記錄,有時只顯示2、1,有時僅顯示空白。 在數據庫中,我大約有28條記錄。
我嘗試過的
這是獲取記錄限制為3的查詢
<?php
$sql = "SELECT * FROM members WHERE member_status='activated' ORDER BY RAND() DESC LIMIT 3";
$query = $db->SELECT($sql);
if($db->NUM_ROWS() > 0){
$rows = $db->FETCH_OBJECT();
?>
這是運行並在循環中獲取所有3條記錄的代碼。
<!-- Suggested Friends -->
<div class="col-md-0 media-body">
<?php
foreach($rows as $row){
$member_id = $row->member_id;
$sql = "SELECT * FROM profile WHERE profile_id='$member_id' LIMIT 1";
$query = $db->SELECT($sql);
$rows = $db->FETCH_OBJECT();
foreach($rows as $row){
$suggested_profile_id = $row->profile_id;
$suggested_profile_photo = $row->profile_photo;
$suggested_profile_username = $row->profile_username;
$suggested_profile_name = $row->profile_name;
if(
$suggested_profile_id != GET_SESSION_ID_VALUE(ENCRYPTION_KEY)&&
!is_in_ARRAY($make_string_to_ARRAY, $suggested_profile_id)
){
?>
<div class="row margin0">
<div class="col-md-4 pad0">
<a href="/<?php echo $suggested_profile_username; ?>" title="<?php echo $suggested_friends_profile_name; ?>" >
<?php
global $suggested_friends_profile_id;
$member_dir = dirname(dirname(dirname(__FILE__))) . "/members/" . $suggested_profile_id ."/smalll_" . $suggested_profile_photo;
if(file_exists($member_dir)){
?>
<img alt="<?php echo $suggested_profile_name; ?>" title="<?php echo $suggested_profile_name; ?>" src="/members/<?php echo $suggested_profile_id; ?>/smalll_<?php echo $suggested_profile_photo; ?>" width="50" height="50">
<?php
} else {
?>
<img alt="<?php echo $suggested_profile_name; ?>" title="<?php echo $suggested_profile_name; ?>" src="/assets/images/default.jpg" width="50" height="50">
<?php
}
?>
</a>
</div>
<div class="col-md-8 pad0">
<a href="<?php echo $suggested_profile_username; ?>" class="bold welcome-name"><?php echo $suggested_profile_name; ?></a>
<span class="f12 gray">271 Mutual Friends</span>
<a href="#" class="welcome-name">Add as friend</a>
</div>
</div>
<?php
}
}
}
?>
</div>
<!-- ** Suggested Friends -->
我想念什么? 有沒有其他方法可以實現這一目標...謝謝!
在我看來,您正在覆蓋內部選擇中的$rows
變量。
foreach($rows as $row){ // <-- first $rows / $row
$member_id = $row->member_id;
$sql = "SELECT * FROM profile WHERE profile_id='$member_id' LIMIT 1";
$query = $db->SELECT($sql);
$rows = $db->FETCH_OBJECT(); <-- $rows overwritten
foreach($rows as $row){
從您的應用程序邏輯中斷開顯示,調試這種事情將不會很困難。 此外,您有很多重復的代碼,這使得事情變得難以管理以及難以調試。
此外,如果您運行一個查詢,您將不會遇到此問題: SELECT * FROM members JOIN profile ON members.member_id = profile.profile_id
,不僅使您的代碼變得更簡單,而且雙foreach循環問題也消失了,但是您對數據庫的訪問也會更有效率。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.