如何使用php mysql从数据库中识别未保存的值

时间:2014-06-10 07:04:43

标签: php mysql

我必须使用php和mysql从mysql表中识别未保存的值,例如我使用名为 numtab 的表格,我已经存储了一些数字 1,3,4,7, numb 列中的23,12,45

现在我随机生成了一个新号码(例如23),我必须用已存储的号码检查这个号码,

如果表中存在23意味着我必须生成另一个新数字,并且必须再次使用存储的值进行检查,此过程必须继续,直到找到未保存的数字。

如果表中不存在生成的值,则表示可以停止该进程并将该数字存储在表中。

这里是我目前正在使用的格式

$numb=23;
$qryb="select * from numtab where numb='$numb'";
$results=mysql_query($qryb)or die("ERROR!!");
if(mysql_num_rows($results) == 1)
{
    $numb=rand(1,100);
    mysql_query("insert query");   
}

问题在于代码只是验证一次,它没有验证第二次。我认为如果使用 for while循环意味着可以解决这个问题,但我不知道如何做循环,所以帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

你可以像这样使用in子句:

$qryb="select * from numtab where numb in('$numb')";
$results=mysql_query($qryb)or die("ERROR!!");
$count = mysql_num_rows($results);


if ($count > 0) {
      echo "number exist in db";
} else {
     echo "number does not exist in db";
}

答案 1 :(得分:0)

您可以创建一个while()循环来检查数据库中是否存在这些数字。您还可以从数据库中检索所有数字,将它们存储在一个数组中,并检查该数组中是否存在生成的数字。

第一个选项是这样的:

do {
  $numb=rand(1,100);
  $qryb="select * from numtab where numb='$numb'";
  $results = mysql_query($qryb) or die("ERROR!!");
} while(mysql_num_rows($results) >= 1)
mysql_query("insert query");   

第二种选择是这样的:

$query = mysql_query("SELECT DISTINCT(numb) as numb FROM numtab");

// set array
$array = array();

// look through query
while($row = mysql_fetch_assoc($query)){
  // add each row returned into an array
  $array[] = $row['numb'];
}

do 
{
  $numb = rand(1,100);
}
while(!in_array ( $numb , $array) ;
mysql_query("insert query");