我目前正在尝试创建一个电子邮件激活系统,该系统在用户注册时生成一个唯一代码,向他们发送一封包含 URL 的电子邮件,该 URL 包含该代码作为参数。
我的 sql 表包含两个添加的字段,1 个字段用于保存每个唯一代码的值和一个 bool 字段,如果帐户不活跃则为 false,如果帐户活跃则为 true。
我当前的代码是这样的:
$code = mysqli_real_escape_string($conn, $_GET['code']);
从 URL 中获取代码并将其存储为变量,
$check = mysqli_query("SELECT * FROM core_customer_information WHERE activation_code='$code' AND activated='1' ");
if ( mysqli_num_rows($check) == 1)
{
die ('The account has already been activated');
}
else
{
$activate = mysqli_query("UPDATE core_customer_information SET activated='1' WHERE activation_code='$code'");
if ( $conn->query($activate) === TRUE )
{
echo ('Your account has know been activated <br>');
echo $code;
}
else
{
die ('Account not activated ' . $conn->error);
}
}
$check
检查帐户是否已经被激活并且 $activate
应该将我表上的 bool 字段更新为 true
( 1).
我遇到的问题是我的更新查询没有这样做。我已经在 phpmyadmin 中测试了实际的查询,以检查它是否有效,它确实有效,所以我非常坚持解决这个问题,如果有人能帮助我,我将不胜感激。
最佳答案
$check = mysqli_query("SELECT * FROM...");
只是第一个参数应该是一个连接资源:)
$check = mysqli_query($conn,"SELECT * FROM...");
也通过How can I prevent SQL injection in PHP?
此外,您正在尝试执行更新查询两次。
$activate = mysqli_query("UPDATE ...");
if ( $conn->query($activate) === TRUE )
{
应该是
if(mysqli_query($conn,"UPDATE ..."))
{
或
if($conn->query("UPDATE ..."))
{
关于PHP查询以更新表中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36279484/