我有以下函数来生成随机字符串:
public function generateString(){
function generateCharacter () {
$possible = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
$char = substr($possible, mt_rand(0, strlen($possible)-1), 1);
return $char;
}
function generateNumber () {
$GUID = generateCharacter().generateCharacter().generateCharacter().generateCharacter().generateCharacter().generateCharacter().generateCharacter().generateCharacter().generateCharacter();
return $GUID;
}
$string = generateNumber();
return $string;
}
然后我需要能够使用 for 循环生成这些随机字符串 x 次并将它们插入我的 MySQL 表中:
$how_many
是我选择要循环多少次的地方。
for ($i = 1; $i <= $how_many; $i++) {
$random = $this->generateString();
$query_params = array(
':code' => $random,
);
$query = "
INSERT INTO table
(
code
)
VALUES
(
:code
)
";
try {
$stmt = DB::get()->prepare($query);
$stmt->execute($query_params);
}
catch(PDOException $ex) {}
}
上面给了我一个错误:
Fatal error: Cannot redeclare generateCharacter() (previously declared in....
我知道我不能在 for 循环中使用该函数,否则我会收到此错误,但如果我将它放在循环之外,它只会生成一次字符串并每次插入相同的字符串。
我怎样才能得到它,所以我循环中的每个插入都是一个新的随机字符串?