sql只在php中插入一些数据

时间:2014-08-02 03:00:20

标签: php mysql sql

使用来自激活电子邮件的数据。 $ email& $键。

$ result1 mysql_query -

结果是只有emailrolecredits被插入到表格users中。未插入数据项usernamepassword

$ result2 mysql_query -

不会从表tempusers

中删除数据

如果我回显来自while循环的数据,则返回正确的数据。

要做一些简单但我无法看到它。感谢。

CODE:     

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!";
}
?>

2 个答案:

答案 0 :(得分:0)

$_get in => mysql_real_escape_string($_get['key'])是小写字母。

$_GETsuperglobal必须设置为大写字母,例如this => $_GET


旁注: 我注意到您在key等中使用了$_GET['key']这个词。

如果您的其他脚本恰好使用此单词作为列引用,则需要在反引号中设置它,因为key是MySQL reserved word我只是在这里思考。


将错误报告添加到文件顶部,这将有助于生产测试。

error_reporting(E_ALL);
ini_set('display_errors', 1);

另外,我建议您使用mysqli_ functions with prepared statementsPDO prepared statements

答案 1 :(得分:0)

您确定查询会执行吗?你还确定查询至少有1个结果吗? $email已设置,但要设置您的查询需要至少有1个结果的用户名和密码。

我也注意到$_get['key']但我不确定是否需要将其更改为$_GET['key']