2013-12-11 52 views
0

這是我的第一篇文章,所以請隨身攜帶。如果這個問題有一個可笑的簡單解決方案,或者我沒有很清楚地解釋我自己,我很抱歉。 - 另外,我大部分都是自學成才的,如果我的工作很瑣碎,我會很抱歉。如何遍歷數據庫結果,比較每個值與數組中的值並返回匹配的ID?

我想建立一個函數,將被給予一個數組。並從該數組中遍歷數據庫中的整個表以嘗試查找匹配項。如果它找到匹配。我希望它從數據庫表中回顯出匹配的ID。

如果可能的話,我還想說它是否發現任何近距離匹配?


什麼使這個棘手對我來說,它需要儘管他們爲了所有值匹配...

例如,如果函數是有這個數組:

      $array = array(1,2,3,4,5)

並在數據庫中找到該陣列:

      $array = array(2,3,5,1,4)

應該認爲這是一個比賽

此外,如果發現;

      array(1,2,3,4,5,6)

它應該輸出這個這個作爲除了值6的匹配;

我希望我已經清楚。提前感謝您的任何幫助和所有幫助表示讚賞。

先謝謝你,Greg。

+1

聽起來像你想要一個類似這樣的查詢'select foo from bar where id in(ARRAY VALUES HERE)' – 2013-12-11 18:57:52

+1

也許s你的數據庫表如何更好地解釋你想要做什麼 – Steve

回答

0

您可以使用數組差得到的結果只是運行的代碼,你就會明白 案例1

$array1 = array(1,2,3,4,5); 
$array2 = array(1,2,3,4,5,6); 
$result = array_diff($array1, $array2); 

print_r($result); 

案例2

$array1 = array(1,2,3,4,5); 
$array2 = array(1,2,3,4,5,6); 
$result = array_diff($array2, $array1); 

print_r($result); 

之後,你可以$結果的計並把它放在你的邏輯中。

0

案例1:

也許你可以從數據庫中選擇的唯一值。

SELECT DISTINCT unique_values_that_need_for_compare_column FROM table 

這SQL結果將是$ databaseValues變量的值。

比迭代函數獲得的數組。

foreach ($functionArray as $value) { 
    if (in_array($value, $databaseValues)) { 
     // you have a match 
     echo $value; 
    } 
} 

案例2:

或者你可以讓每一個值的查詢:

foreach ($functionArray as $value) { 
    $query = "SELECT COUNT(*) as match FROM table WHERE unique_values_that_need_for_compare_column = " . intval($value); 
    // fetch the result into the $queryResult variable and than check 
     if ($queryResult['match']) { 
      // you have a match 
      echo $value; 
     } 
    } 
1

讓我refrase你的問題,這是正確的?

根據ID數組返回ID在數組中的所有記錄。

如果是這樣,使用IN operator

SELECT * 
FROM tableName 
WHERE columnName IN (value1, value2, value3, etc.) 

所以首先我們需要在給定的數組轉換成一個逗號分隔的列表:

$comma_seperated = implode(', ', $array); 

現在我們有一個逗號分隔我們可以在我們的查詢中使用的列表:

$comma_seperated = implode(', ', $array); 

$query = "SELECT * 
FROM tableName 
WHERE id IN (" . $comma_seperated . ")"; 

// execute query, don't use mysql_* functions, etc. ;) 
1

你可以使用任何的選項:

選項1:

$array = array(1,2,3,4,5); 
$query = "SELECT id FROM youtable WHERE id IN(".implode(",",$array).")"; 

選項2:

$array = array(1,2,3,4,5); 
$query = "SELECT id FROM yourtable";//Select ids 

現在通過查詢結果迭代,說結果存儲在$ query_results,

$result=array(); 
foreach($query_results as $row){ 
    if(in_array($row['id'],$array)){ 
      $result[] = $row['id']; 
    } 

} 
相關問題