php - MySQL 和 Do While 循环超时

标签 php mysql do-while

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

注意它只是生成一些代码数字,我知道它很简单且不安全,它仅在本地主机上完成并且连接值是正确的。

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. $i设置为0
  2. 生成一个随机数
  3. 执行 SQL 查询
  4. 检查查询执行是否返回false
  5. 只有当它确实存在并且适用更多条件时,您最终才会递增 $i
  6. 重复此操作,直到 $i 的增量超过 1999

问题是你的第四步总是成功。查询始终成功执行,mysql_query 始终返回结果集。您必须检查结果集以查看其中的内容,而不仅仅是针对 == false 进行测试。因此,$i 永远不会递增。

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

关于php - MySQL 和 Do While 循环超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24488209/

相关文章:

java - 如何用do-while循环来陷阱用户?

ubuntu - ubuntu 上的 Phpbrew – 如何更改版本?

php - PHP解析/语法错误;以及如何解决它们

java - 通过 Android 模拟器和 xampp 服务器连接到本地主机

java - 是否存在必须使用 while/do-while 而不是 for 的情况?

c - 虽然声明不起作用 C

php - Xdebug 在 xdebug_break() 处停止,但不在 NetBeans 中的断点处停止

sql - MySQL:为什么这个数据库创建脚本不起作用?

mysql - 如何在 MySQL Python 中创建字典中的字典?

php - 如何根据 "enum"列获取分类的 laravel Eloquent 结果并将其显示在一页中?