0

当用户注册我的网站时,他们会填写一份注册表并将其详细信息放入名为 ptb_registrations 的表中。

在此之后,他们收到一封带有验证码的电子邮件,他们单击电子邮件链接并转到验证链接,输入正确的代码后,我希望运行查询。

此查询需要充当插入查询,它将数据从一个表 (ptb_registrations) 复制到另一个表 (ptb_users)。

有人可以帮我解决这个问题,因为它不起作用而且我不确定我是否朝着正确的方向前进。谢谢

// Make a safe query
$query = sprintf("INSERT INTO ptb_users (first_name, last_name, email,    
    password, dob)
SELECT firstname, lastname, email, password    
    dob
WHERE not exists (select 1 from ptb_registrations where ptb_registrations.registration_code='$verificationcode';",
                    mysql_real_escape_string($newpassword));

mysql_query($query)or die('Could not update members: ' . mysql_error());
4

2 回答 2

1

据我所知,您的查询中有很多语法错误:

select 语句中密码和 dob 之间没有逗号,未指定 select 语句的 From table。not exists此外,条件看起来很奇怪(并且语句没有右括号)。至于我,你应该有这样的查询:

$query = "INSERT INTO ptb_users (first_name, last_name, email, password, dob)
SELECT firstname, lastname, email,'". mysql_real_escape_string($newpassword)."', dob FROM ptb_registrations
WHERE ptb_registrations.registration_code=''". mysql_real_escape_string($$verificationcode).";"

此查询将从 ptb_registrations 中获取一行,其中注册码等于从请求中收到的一个,并将其插入 ptb_users (并将新密码作为用户密码)

于 2013-03-14T13:32:50.027 回答
0

你可以尝试这样的事情:

SELECT firstname, lastname, email, password,dob
into yourtablename
from (tablename)
^ you are missing something here i.e your tablename
WHERE not exists (select 1 from ptb_registrations where
ptb_registrations.registration_code='$verificationcode';",
mysql_real_escape_string($newpassword)
  • 这将创建具有相同的新表data structure
于 2013-03-14T13:33:32.737 回答