这个MySQL插入语句有什么问题?

时间:2011-08-27 13:50:56

标签: php mysql sql insert

表单正常,它可以正确捕获所有信息,但是,当我使用函数生成用于激活用户的随机字符串时,错误就开始了。

function generateActivationString() {
    $randomSalt = '*&(*(JHjhkjnkjn9898';
    $uniqId = uniqid(mt_rand(), true);
    return md5($randomSalt.$uniqId);
}

if (!get_magic_quotes_gpc()) {
// $_POST['pass'] = addslashes($_POST['pass']);
$username = addslashes($_POST['username']);
$firstname = addslashes($_POST['firstname']);
$surname = addslashes($_POST['surname']);
// $_POST['email'] = addslashes($_POST['email']);
$email = mysql_real_escape_string(addslashes($_POST['email']));
$pass = mysql_real_escape_string(sha1($_POST['pass']));
$activationString = generateActivationString();
}

$insert = "INSERT INTO users (username, password, firstname, surname, email, activation_string) 
VALUES ('".strtolower($username)."', '".$pass."', '".strtolower($firstname)."', '".strtolower($surname)."', '".strtolower($email)."', '".$activationString."')";

这是echoed insert语句:

INSERT INTO users (username, password, firstname, surname, email, activation_string) VALUES ('', '', '', '', '', '')

我知道它已经创建了一个新条目,因为填充了auto_increment id行,但其他字段的其余字段仍为空。

这是generateActivationString()的代码,所以我知道它也在工作! - 264361eeb6e75d3934ce249a0d05f2c1

任何建议都非常受欢迎,非常感谢!

3 个答案:

答案 0 :(得分:1)

严格遵守上述代码,$username$password等变量属于if块的范围,将其移至if之外。< / p>

答案 1 :(得分:0)

我没有看到你在任何地方发送该查询,也许这是你的问题......

答案 2 :(得分:0)

亲爱的,亲爱的。您的语句的最大问题是您没有使用预准备语句并直接从POST参数获取信息。这是灾难的一个方法,以及大多数网站被黑客入侵。

相关问题