2013-12-11 53 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']; 
    } 

} 
相关问题