PHP查询以更新表中的字段

标签 php mysql

我目前正在尝试创建一个电子邮件激活系统,该系统在用户注册时生成一个唯一代码,向他们发送一封包含 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/

相关文章:

php - 在 Repository 类中注入(inject) DatabaseManager

php - 如何将所有子目录页面重定向到父目录?

java - 如何从mysql中的用户那里获取WHERE值

php - 在 mysql 数据库中记录用户上次事件日期时间的正确方法

MySQL : can't figure out what's wrong with this LEFT JOIN query

php - 循环 DATETIME 并在 DATETIME 内保留 DATES

php - 工会中的 Laravel 关系冲突

php - 创建一个以 API 为中心的应用程序,我自己的疑惑

java - 登录网站到外部门户

PHP PDO 检查数据库查询是否返回 NULL 值