使用激活电子邮件中的数据。 $电子邮件和$ key 。
$result1 mysql_query -
结果是只有email
、role
、credits
被插入到表users
中。不插入数据项用户名
、密码
。
$result2 mysql_query -
数据未从表 tempusers
中删除
如果我回显 while 循环中的数据,则会返回正确的数据。
一定是一些简单的事情,但我就是看不到它。谢谢。
代码:
include 'core/init.php'; /* database connection*/
if (isset($_GET['email']) && preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", $_GET['email'])){
$email = mysql_real_escape_string($_GET['email']);
}
if(isset($_GET['key']) && (strlen($_GET['key']) == 32)) {
$key = mysql_real_escape_string($_get['key']);
}
if(isset($email) && isset($key)) {
$result = mysql_query("SELECT * FROM `tempusers` WHERE `email` = '$email' AND `activation` = '$key' ") or die(mysql_error());
while($row = mysql_fetch_array($result)) {
$user_id = mysql_real_escape_string($row['user_id']);
$username = mysql_real_escape_string($row['username']);
$email = mysql_real_escape_string($row['email']);
$password = mysql_real_escape_string($row['password']);
}
$result1 = mysql_query("INSERT INTO `users` (`username`, `email`, `password`, `role`, `credits`) VALUES ('$username', '$email', '$password', 'user', 0)") or die(mysql_error());
$result2 = mysql_query("DELETE FROM `tempusers` WHERE `user_id` = '$user_id'") or die(mysql_error());
if(!$result1) {
echo "Oops your account could not be activated. Please contact the system administrator!";
} else {
header('Location: prompt.php?x=0');
}
} else {
echo "Error. Please contact the system administrator!";
}
?>
最佳答案
您确定要执行查询吗?您还确定查询至少有 1 个结果吗? $email
已设置,但要设置用户名和密码,您的查询需要至少有 1 个结果。
我还注意到 $_get['key']
但我不确定是否有必要将其更改为 $_GET['key']
。
关于php - sql只在php中插入一些数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25091227/