我试图遍历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));
答案 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);
未经测试,但这应该为您提供一个列出每行匹配数的数组