如何使用php mysql从数据库中识别未保存的值
我必须使用php和mysql从mysql表中识别未保存的值,例如,我使用名为numtab的表,并且我已经在numb列中存储了一些数字1、3、4、7、23、12、45 现在我已经随机生成了一个新的数字(例如23),我必须用已经存储的数字检查这个数字 如果表中存在23,则意味着我必须生成另一个新编号,并且必须再次使用存储的值进行检查,此过程必须继续,直到找到未保存的编号 若表中不存在生成的值,则表示可以停止该过程并将该数字存储在表中 下面是我目前使用的格式如何使用php mysql从数据库中识别未保存的值,php,mysql,Php,Mysql,我必须使用php和mysql从mysql表中识别未保存的值,例如,我使用名为numtab的表,并且我已经在numb列中存储了一些数字1、3、4、7、23、12、45 现在我已经随机生成了一个新的数字(例如23),我必须用已经存储的数字检查这个数字 如果表中存在23,则意味着我必须生成另一个新编号,并且必须再次使用存储的值进行检查,此过程必须继续,直到找到未保存的编号 若表中不存在生成的值,则表示可以停止该过程并将该数字存储在表中 下面是我目前使用的格式 $numb=23; $qryb="sele
$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 loop可以解决这个问题,但我不知道如何进行循环,所以请帮助我解决这个问题。您可以在这样的子句中使用:
$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";
}
您可以进行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");
第二种选择是这样的:
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");
为什么你不能使用存储过程生成这些数字并返回生成的最终数字?@scragar-我是php mysql新手,你能清楚地告诉我如何执行存储过程吗?如果你不使用存储过程,你能清楚地告诉我这个过程(使用数组)。将数组中的值存储为键会更快,然后使用isset,PHP优化了查找键,但没有优化查找值。