【问题标题】:Random 1000 times on a refresh by Using php使用 php 随机刷新 1000 次
【发布时间】:2015-08-26 05:01:53
【问题描述】:

我已经在 php 中创建了一个生成随机数并已插入到 mysql 中。但是我想在刷新一次时循环它1000次。所有项目都必须存储在数据库中。我该怎么做?

function generateCode($length = 11) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}
echo $lucky_code=generateCode()."<br/>";

$servername = "localhost";
$username = "root";
$password = "";
$database = "random";

$cnt = mysql_pconnect($servername, $username, $password) or die(mysql_error());
mysql_select_db($database);
mysql_query("INSERT INTO tbl_code(code) VALUES('$lucky_code')",$cnt) or die(mysql_error());

【问题讨论】:

  • 你可以设置 -->for ($i = 0; $i
  • @syedmohamed 或者他可以使用1000 作为参数传递来调用他的退出函数,因为无论如何他已经观察到默认参数。 Chheang,您收到的错误是什么?
  • @syedmohamed 这是我的长度数字。

标签: php mysql


【解决方案1】:
for($i = 0; $i < 1000; $i++)
{
    $lucky_code = generateCode();

    mysql_query("INSERT INTO tbl_code(code) VALUES('$lucky_code')",$cnt) or die(mysql_error());
}

如果您的maximum query size 足够大,您还可以尝试在一个查询中添加所有行,以便只有一个查询(而不是 1000 个查询):

$lucks_codes = array();
for($i = 0; $i < 1000; $i++) {
    $lucky_codes[] = generateCode();
}

mysql_query("INSERT INTO tbl_code(code) VALUES ('".implode("'), ('", $lucky_codes)."')", $cnt) or die(mysql_error());

还请记住,mysql 扩展名已被弃用。请改用mysqliPDO

【讨论】:

  • 第二个选项会加1000倍吗?
  • 是的,它会生成类似INSERT INTO tbl_code(code) VALUES ('...'), ('...'), ('...'), ('...'), ('...'), ('...'), ...
【解决方案2】:

您可以在代码前使用set_time_limit 并运行循环 1000 次,如下所示

set_time_limit(0);

function generateCode($length = 11) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}

$servername = "localhost";
$username = "root";
$password = "";
$database = "random";

$cnt = mysql_pconnect($servername, $username, $password) or die(mysql_error());
mysql_select_db($database);
for ($i = 0; $i < 1000; $i++) {
    $lucky_code = generateCode();
    mysql_query("INSERT INTO tbl_code(code) VALUES('".$lucky_code."')", $cnt) or die(mysql_error());
}

【讨论】:

  • 它可以工作,但所有项目都是生成代码。有什么办法让它与每个项目不同?
  • 是否为所有记录生成相同的字符串?
  • 是的。每条记录都必须不同。
  • 我用了你的方式,检查编辑并告诉我。
猜你喜欢
  • 2012-06-06
  • 1970-01-01
  • 1970-01-01
  • 2017-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多