使用php更新sql表

时间:2016-03-28 21:42:07

标签: php mysql sql

我有一个表(core_customer_information),我想在php中创建一个SQL查询,它使用变量$ code并更新表中的激活字段。

$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'");
            echo ('Your account has know been activated <br>'); 
            echo $code; 
        }

首先,我检查激活是否等于1,在这种情况下,帐户被归类为激活,如果没有,我然后创建一个UPDATE查询来更新该类的激活字段。

我的问题是查询没有更新我的表格,我不确定问题出在哪里。

如果有人能帮我看一下,我将不胜感激。

2 个答案:

答案 0 :(得分:0)

从你的问题中你不会完全清楚你将使用什么语言来启动SQL查询(因为目前唯一的标签是sql和mysql ......)

但是如果语言类似于Java,那么你可以使用类似于Java的PreparedStatement。 (见https://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html

PreparedStatement比将动态变量简单连接到sql Strings更安全。

答案 1 :(得分:0)

我建议您使用mysqli_real_escape_string,因为它会在考虑到页面所述的当前连接字符集的情况下转义字符串:

  

此函数用于创建可在SQL语句中使用的合法SQL字符串。给定的字符串被编码为转义的SQL字符串,并考虑了连接的当前字符集。

要防止大多数mysql注入方法,您应该执行以下操作:

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

如果您应该使用ADODB或其他适配器,我建议您使用预准备语句及其防止SQL注入的方法。