PHP查询更新表

时间:2016-03-29 08:47:36

标签: php mysql

我目前正在尝试创建一个电子邮件激活系统,该系统会在用户注册时生成唯一代码,并向其发送包含URL的电子邮件,该URL包含作为参数的代码。

我的sql表包含两个添加的字段,1个字段用于保存每个唯一代码的值,以及一个布尔字段,如果帐户未处于活动状态,则为false;如果帐户处于活动状态,则为true。

我目前的代码是:

$code = mysqli_real_escape_string($conn, $_GET['code']);

从网址抓取代码并将其存储为变量

$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是否已被支持将我桌面上的布尔字段更新为true(1)。

我遇到的问题是我的更新查询没有这样做。我在phpmyadmin中测试实际查询以检查它是否有效,它确实如此,所以我非常坚持修复问题,如果有人可以帮助我,我会很感激。

3 个答案:

答案 0 :(得分:2)

$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 ..."))
  {

OR

if($conn->query("UPDATE ...")) 
 {

答案 1 :(得分:0)

您的$check$activation变量都需要连接变量($con)与查询参数一起传递。像这样:

$check = mysqli_query($conn, "SELECT * FROM core_customer_information WHERE activation_code='$code' AND activated='1' "); 

$activate = mysqli_query($conn, "UPDATE core_customer_information SET activated='1' WHERE activation_code='$code'");

答案 2 :(得分:0)

这些行可能有问题,请检查。

$check = mysqli_query("SELECT * FROM core_customer_information WHERE activation_code='$code' AND activated='1' ");

mysqli_query的语法是 -

mysqli_query($con,"SELECT * FROM Table");

更新的mysqli_query相同。

为什么在程序中使用面向对象的mysqli?我的意思是( - &gt;标志) 那么&#39; ===&#39;可能无效

if ( $conn->query($activate) === TRUE )