我的脚本从文件text.txt中读取电子邮件,我想为mySQL数据库中的每封电子邮件记录电子邮件和唯一的随机代码。所有工作都是正确的,但每次我得到相同的#34;随机代码"。
I get this:
example1@stack.com vsdggd
example2@stack.com vsdggd
example3@stack.com vsdggd
I want to get:
example1@stack.com bsgfdg
example2@stack.com jhngfv
example3@stack.com sdfasd
代码:
<?php
function generatePassword($length = 6){
$chars = 'abcdefhiknrstyz';
$numChars = strlen($chars);
$string = '';
for ($i = 0; $i < $length; $i++) {
$string .= substr($chars, rand(1, $numChars) - 1, 1);
}
return $string;
}
include('../connect.php');
$query = 'insert into cc (email,token) values ("%s","'. generatePassword(6) .'");';
$lines = file('text.txt');//your filename
for($i=0; $i < count($lines); $i++){
mysql_query(sprintf($query, mysql_real_escape_string($lines[$i]))) or die(mysql_error() . '<br><br>' . '<b>Query:</b> ' . $query);
}
?>
答案 0 :(得分:1)
您只需调用generatePassword()一次,按原样修复代码:
<?php
function generatePassword($length = 6){
$chars = 'abcdefhiknrstyz';
$numChars = strlen($chars);
$string = '';
for ($i = 0; $i < $length; $i++) {
$string .= substr($chars, rand(1, $numChars) - 1, 1);
}
return $string;
}
include('../connect.php');
$query = 'insert into cc (email,token) values ("%s","%s");';
$lines = file('text.txt');//your filename
for($i=0; $i < count($lines); $i++){
mysql_query(sprintf($query, mysql_real_escape_string($lines[$i]), generatePassword(6))) or die(mysql_error() . '<br><br>' . '<b>Query:</b> ' . $query);
}
?>
这样就可以为每一行调用generatePassword()。
此外,您应该使用较新的mysqli或理想的PDO,因为旧的mysql已被弃用且已从PHP7中删除。