循环遍历mysql表行并检查是否有任何列匹配php中的设置号

时间:2011-12-13 23:09:33

标签: php mysql

我试图遍历mysql表并检查一行是否包含我指定的数字:

这就是我所拥有的:

带数字的mysql表:

mysql表:

no1|no2|no3|no4|no5
 1   3   5   2   6
 4   7   8   9   8
 2   6   9   1   0
 ...

例如:我有号码 4 5 3 7

因此,在第一行中,我应该得到总共2行,因为第3行和第5行是第3行,这个数字是我指定的数字。

在第二行中,我应该得到总共1,因为行中只有4和我指定的数字。

在最后一行中,总数应为0,因为没有匹配。

我希望它清楚。

我尝试过以下但是它不起作用我希望有人能提前帮助我解决它。

$lottono1=4;
$lottono2=5;
$lottono3=3;
$lottono4=7;

$no1 = 0;
$no2 = 0;
$no3 = 0;
$no4 = 0;

do { ?>
// i done the following if code for each numbers but
//putting this only to take less space

if (($row_Recordset1['no1']=$lottono1) || ($row_Recordset1['no1']=$lottono2) || ($row_Recordset1['no1']=$lottono3) || ($row_Recordset1['no1']=$lottono4)) {
      $no1=1;

  } 

while ($row_Recordset1 = mysql_fetch_assoc($Recordset1));

3 个答案:

答案 0 :(得分:3)

select *,
if(no1 in (4,5,3,7),1,0)+
if(no2 in (4,5,3,7),1,0)+
if(no3 in (4,5,3,7),1,0)+
if(no4 in (4,5,3,7),1,0)+
if(no5 in (4,5,3,7),1,0) as found
from table

答案 1 :(得分:2)

要完成PHP / MySQL,您可以执行以下操作:

 $query = 'SELECT * FROM table';

 $result = mysql_query($query) or die();
 $matchValues = array(4,5,3,7);

 while($row = mysql_fetch_array($result)){
     $counter = 0;
     foreach($matchValues as $value)
     {
         if(in_array($value, $row))
         {
             $counter++;
         }
     }
     print "Searched row and found $counter matches<br/>";
 }

答案 2 :(得分:2)

对于一个人来说,你的“if”条件中的操作员是错误的(你是设置而不是比较)。

无论我做什么更像:

$numbers_to_match = array(4,5,3,7) ;  
$query = mysql_query("select * from `table` where ____",connection_here);
$matches[] = array();
$i=0;
while($r=mysql_fetch_array($query)){
    $matches[$i]=0;
    foreach($r as $val){
        if (in_array($val,$numbers_to_match)){
            $matches[$i]++;
        }
    }
    $i++;
}
print_r($matches);

未经测试,但这应该为您提供一个列出每行匹配数的数组