I have the following function to generate a random string:
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;
}
I then need to be able to generate these random strings x amount of times using a for loop and insert them into my MySQL table:
$how_many is where i would select how many times i want to loop.
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) {}
}
The above gives me an error though of:
Fatal error: Cannot redeclare generateCharacter() (previously declared in....
I know i cannot have the function in the for loop otherwise i get this error but if i have it outside the loop it just generates the string once and inserts the same string everytime.
How can i get it so each insert in my loop is a new random string?