2016-03-28 11 views
0

Ich habe eine Tabelle (core_customer_information) und ich möchte eine SQL-Abfrage in PHP erstellen, die die Variable $ code verwendet und aktualisiert das aktivierte Feld in meiner Tabelle.SQL-Tabelle mit PHP aktualisieren

$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; 
     } 

Zunächst einmal, überprüfe ich, ob die gleich 1 aktiviert ist, in welchem ​​Fall das Konto eingestuft wird als aktiviert, und wenn nicht, ich erstelle dann eine UPDATE-Abfrage das aktivierte Feld dieser Klasse zu aktualisieren.

Mein Problem ist, dass die Abfrage meine Tabelle nicht aktualisiert und ich bin nicht sicher, wo das Problem liegt.

Ich würde mich freuen, wenn jemand mich bitte suchen könnte.

+0

** WARNUNG **: Wenn Sie 'mysqli' verwenden, sollten Sie parametrisierte Abfragen und [' bind_param'] (http://php.net/manual/en/mysqli-stmt.bind-param.php) verwenden Fügen Sie Benutzerdaten zu Ihrer Abfrage hinzu. ** Verwenden Sie NICHT ** String-Interpolation oder Verkettung, um dies zu erreichen, weil Sie eventuell einen Fehler machen und einen schwerwiegenden [SQL injection bug] erstellen (http://bobby-tables.com/). – tadman

+0

Ich empfehle Ihnen, eine neue Frage für neue Fragen zu öffnen. (Für andere Leute, die dies überprüfen, sehen Sie sich die Bearbeitungsprotokolle an) – GGG

Antwort

0

Ich würde Sie empfehlen mysqli_real_escape_string verwenden, da es die Zeichenfolge unter Berücksichtigung entkommt die aktuelle Verbindung charset wie von der Seite angegeben:

Diese Funktion eine rechtliche SQL-Zeichenfolge zu erstellen, die Sie in einem verwenden können SQL-Anweisung Die angegebene Zeichenfolge wird in eine Escape-SQL-Zeichenfolge codiert, wobei der aktuelle Zeichensatz der Verbindung berücksichtigt wird.

meisten MySQL-Injektionsverfahren vermeiden Sie Folgendes tun sollten:

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

Wenn Sie einen Adapter wie ADODB oder ein anderes verwenden sollte jemals, würde ich empfehlen Sie vorbereitete Anweisungen verwenden und ihre Methoden zum Verhindern der SQL-Injektion.

0

Es ist nicht völlig klar, aus Ihrer Frage, welche Sprache Sie die SQL-Abfragen zu starten verwenden werden (da die Tags nur im Moment SQL und MySQL sind ...)

Wenn aber die Sprache ist ähnlich wie Java Dann können Sie etwas Ähnliches wie PreparedStatement von Java verwenden. (Siehe https://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html)

Ein PreparedStatement ist sicherer als eine einfache Verkettung dynamischer Variablen in SQL-Strings.

Verwandte Themen