2013-09-23 26 views
1

我試圖檢查一個數組中是否存在一個值,如果存在,它應該從數據庫回顯關於該值的信息。如果數組和數據庫中都存在值

我現在得到的是「空」結果,但我希望在列表中至少得到三個結果,這兩個結果都存在於數組和數據庫中。

這是一個後續代碼var_dump外觀數組的,它不是整個數組,但它仍然看起來是一樣的:$friends = array($friends['data']);

array(1) { 
[0]=> 
array(680) { 
[0]=> 
array(2) { 
    ["name"]=> 
    string(17) "One friends name" 
    ["id"]=> 
    string(8) "FRIEND_ID" 
} 
[1]=> 
array(2) { 
    ["name"]=> 
    string(13) "Another friends name" 
    ["id"]=> 
    string(9) "FRIEND_ID" 
} 
[2]=> 
array(2) { 
    ["name"]=> 
    string(22) "Another friends name" 
    ["id"]=> 
    string(9) "FRIEND_ID" 
} 

的PHP代碼:

<?php 

$query_top_list_friends = mysql_query(" 
SELECT * FROM ".$DBprefix."users 
WHERE center_id='" . $personal['center_id'] . "' 
ORDER BY workouts DESC LIMIT 10"); 

$i = 0; 
$friends = array($friends['data']); 

while ($top_list_friends = mysql_fetch_array($query_top_list_friends)) 
{ 
//Below it should only echo if the "fid" in the database and the "id" in the array is equal, then it should echo information based on that id from the database 
if($friends[$top_list_friends['fid']]) 
{ 
    $i++; 
    echo "<div class='user'>"; 
    echo "<span class='number'>" . $i . "</span>"; 
    echo "<span class='name'>" . $top_list_friends['name'] . "</span>"; 
    echo "<span class='workouts'>" . $top_list_friends['workouts'] . "</span>"; 
    echo "</div>"; 
} 
} 

任何想法如何我可以修復這個?

回答

1

你應該能夠做到這一點使用SQLIN

$array = array(
    array(
     'id' => 5, 
     'name' => 'Harry' 
    ), 
    array(
     'id' => 8, 
     'name' => 'Josh' 
    ) 
); 

// create an array with just your fid's 
$sql_in_values = array_map(function($ele){ 
    return $ele['id']; 
}, $array); 

// select all entries where the fid's are specified 
$query_top_list_friends = mysql_query(" 
    SELECT * FROM ".$DBprefix."users 
    WHERE center_id='" . $personal['center_id'] . "' 
    AND WHERE fid IN ('" . implode(',', $sql_in_values) . "') 
    ORDER BY workouts DESC LIMIT 10"); 

$i = 0; 
while($top_list_friends = mysql_fetch_array($query_top_list_friends)){ 
    echo "<div class='user'>"; 
    echo "<span class='number'>" . ++$i . "</span>"; 
    echo "<span class='name'>" . $top_list_friends['name'] . "</span>"; 
    echo "<span class='workouts'>" . $top_list_friends['workouts'] . "</span>"; 
    echo "</div>"; 
} 
+0

謝謝!它幾乎很好:)但是這裏變量$ query_top_list_friends是空的,你知道可能是什麼問題嗎? – Kim

+0

如果我做一個$ sql_in_values var_dump它顯示我的所有id的數組,包括也存在於數據庫中的id – Kim

+0

嗯,我只是猜測與查詢,嘗試'echo「 SELECT * FROM」。$ DBprefix。「。用戶 WHERE center_id ='「。 $ personal ['center_id']。 「' AND WHERE fid IN(''。implode(',',$ sql_in_values)。'') ORDER BY exerciseouts DESC LIMIT 10」'然後在PHPMyAdmin(或任何你使用的)中運行查詢。我用'fid',但也許這是錯誤的'ID'? – Prisoner

2

它在我看來就像$friends = array($friends['data']);在索引0處持有朋友的陣列,所以當您撥打if($friends[$top_list_friends['fid']])時,您並不是看着持有朋友的陣列,而是持有朋友的陣列,如果這很有道理

嘗試更改$friends = array($friends['data']);$friends = $friends['data'];並且您應該開始獲得結果,但fid如何工作?它指向數組的索引還是數組的鍵?從你上面張貼的唯一訪問值數組看到的是:

$friends[0][0] // One friend 
$friends[0][1] // Another friend 
$friends[0][2] // Another friend 

所以要確保FID是一個整數調用$friends[0][$fid]將需要一個0-2的整數返回任何數據

希望幫助任何問題,我會很樂意回答

+0

謝謝!但不幸的是,我沒有得到它的工作.. – Kim

+0

當你建立$朋友陣列,你需要分配好友數據到FID鍵'$ friends [FID]',所以如果'$ top_list_friends ['fid'] = 4 '然後:'$ friends [4] = array(['name'] =>「Name」,[id] => 4);'所以當你調用if($ friends [$ top_list_friends ['fid']) '你正在訪問'$朋友[4]' – GroovyCarrot

相關問題