我输入了这个以生成随机代码。我正在尝试将它们添加到生成的数据库中。如何修改此代码以生成x个数而不是一个?
<?php
$tokens = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$serial = '';
for ($i = 0; $i < 4; $i++) {
for ($j = 0; $j < 5; $j++) {
$serial .= $tokens[rand(0, 35)];
}
if ($i < 3) {
$serial .= '-';
}
}
echo '<p>' . $serial;
?>
答案 0 :(得分:0)
用于更精确的随机令牌。尝试使用文字添加当前时间戳。当前时间戳本身每秒都在变化。因此它将大多是独一无二的。在前面或后面添加随机文本可以使同一时间工作的用户更加独特。
UPDATE :还添加一个函数,无论该唯一字符串是否存在。
答案 1 :(得分:0)
一种非常酷,简单的方法,也可以是这样的。
<?php
echo md5(microtime());
当然,它不是100%安全等,但如果你需要一个快速简单的&#34; RANDOM&#34;字符串它可能是有用的。
关于你的问题:
<?php
function genereteRandomKey($count=10)
{
$data = [];
for($i=0;$i<$count;$i++)
{
$data[] = md5(microtime());
}
return $data;
}
var_dump(generateRandomKey());
答案 2 :(得分:0)
为此,我们稍微编辑你的代码并将其包装在一个函数中,就像这样;
function createHash($length = 4)
{
$tokens = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$serial = '';
for ($it = 0; $it < $length; $it++) {
$serial .= $tokens[ mt_rand( 0, (strlen($tokens) - 1) )];
}
return $serial;
}
参数中的长度可以保留为空,默认为4,以防您想要创建更长的代码。
然后创建更多代码,你只需循环通过for循环(或者你正在使用的任何循环!)就像这样;
for ($i = 0; $i < 5; $i++) {
echo createHash() . '<br />';
}
显然,您不希望将它们反映出来,而是将它们添加到数据库中。
考虑到这一点,我是否也可以建议,而不是多个INSERT
查询,将它们全部捕获到数组中,然后在查询上运行一次,这可以像这样实现;
$inserts = array ();
for ($i = 0; $i < 5; $i++) {
$inserts[] = createHash();
}
$sql = "INSERT INTO `table` (`row`) VALUES ('" . implode('\'), (\'', $inserts) . ");";
在该测试运行中,将输出以下内容作为$sql
;
INSERT INTO `table` (`row`) VALUES ('ISS7'), ('SB72'), ('N97I'), ('1WLQ'), ('TF6I);