MySQL和Do While循环超时

时间:2014-06-30 10:38:15

标签: php mysql do-while

这是超时而不回显任何内容以及不插入数据库。不明白为什么。有什么想法吗?

注意只需生成一些代码,我就知道它很简单且不安全,它是在localhost上完成的只有连接值才是合理的。

function populate_codes(){
  $con = mysql_connect(dbhost,dbuser,dbpass);
  mysql_select_db(dbname);
  $i = 0;
  do{
    $code = rand(10000000,99999999);
    $check = mysql_query('SELECT * FROM '.dbcodetable.' WHERE code = $code',$con);
    if(!$check){
        $insertcode = mysql_query('INSERT INTO '.dbcodetable.' (code,status) VALUES ($code,1)',$con);
        if($insertcode){
            echo $i.' - '.$code.'<br />';
            $i++;
        }
     }
  }
  while($i <= 1999);
  echo "------------------------<br /><strong>Complete</strong>";
}

1 个答案:

答案 0 :(得分:2)

您:

  1. $i设为0
  2. 生成随机数
  3. 执行SQL查询
  4. 检查查询执行是否返回false
  5. 只有这样做,并且还有一些条件适用,你最终会增加$i
  6. 你重复这个,直到$i增加到超过1999
  7. 问题在于您的第4步始终成功。查询始终成功执行,mysql_query始终返回结果集。您必须检查结果集以查看其中的内容,而不仅仅是针对== false进行测试。因此,$i永不递增。

    您还希望在所有ifs之外增加$i,或者对无限循环进行一般性保护。