Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich den Erfolg einer Abfrage zum Erstellen, Aktualisieren oder Löschen in CodeIgniter zuverlässig erkennen?

Wie kann ich den Erfolg einer Abfrage zum Erstellen, Aktualisieren oder Löschen in CodeIgniter zuverlässig erkennen?

Barbara Streisand
Barbara StreisandOriginal
2024-10-31 04:13:30281Durchsuche

How can I reliably detect the success of a Create, Update, or Delete query in CodeIgniter?

Erkennen des Erfolgs einer Abfrage zum Erstellen, Aktualisieren oder Löschen in CodeIgniter

Beim Ausführen von Datenbankvorgängen in CodeIgniter ist es wichtig, diese zu überprüfen Erfolg. Andernfalls kann es zu Dateninkonsistenzen oder falschen Ergebnissen kommen, die dem Benutzer angezeigt werden.

Falscher Ansatz:

Die bereitgestellte Controller-Methode geht davon aus, dass alle Ergebnisse ungleich Null zurückgegeben werden Der Wert aus der Modellmethode update() zeigt den Erfolg an. Dies ist jedoch kein zuverlässiger Ansatz, da das Modell möglicherweise Werte ungleich Null zurückgibt, selbst wenn die Abfrage keine Zeilen aktualisiert.

Richtiger Ansatz:

Um richtig Um den Erfolg von Datenbankoperationen zu erkennen, wird empfohlen, die folgenden Schritte zu verwenden:

Controller:

  • Eingabedaten sicher per POST empfangen, nicht über die URL.
  • Verwenden Sie die Methode „affected_rows()“ der CodeIgniter-Datenbankklasse, um die Anzahl der betroffenen Zeilen nach der Ausführung der Abfrage zu überprüfen.
  • Leiten Sie den Benutzer um und zeigen Sie eine Erfolgs- oder Fehlermeldung basierend auf der Anzahl an betroffene Zeilen.

Modell:

  • Verwaltet die Datenbankabfrage und Fehlerprüfung.
  • Verwenden Sie die update()-Methode in die CodeIgniter-Datenbankklasse zum Ausführen der Abfrage.
  • Gibt die Anzahl der betroffenen Zeilen zurück, sodass der Controller das Ergebnis des Vorgangs bestimmen kann.

Beispiel:

<code class="php">// Controller
public function delete($user_id)
{
    if ($this->input->server('REQUEST_METHOD') == 'POST') {
        $result = $this->Crm_user_model->delete($user_id);
        if ($result === false) {
            add_flash_message('alert', 'Failed to delete user');
        } else if ($result == 0) {
            add_flash_message('info', 'User not found or already deleted');
        } else {
            add_flash_message('info', 'User deleted successfully');
        }
    }
}</code>
<code class="php">// Model
public function delete($user_id)
{
    $this->db->delete('user_table', ['user_id' => $user_id]);
    return $this->db->affected_rows();
}</code>

Zusätzliche Überlegungen:

  • Wie in der bereitgestellten Lösung erwähnt, ist es ratsam, Sicherheitsprüfungen sowohl im Controller als auch im Modell einzubauen, um Unbefugte zu verhindern Zugriff oder böswillige Dateneingabe.
  • Es ist von Vorteil, einen Änderungsverlauf in Ihrem System zu führen, um an Datenbankdatensätzen vorgenommene Änderungen zu verfolgen.
  • Für komplexe Datenbankvorgänge sollten Sie die Verwendung des ActiveRecord-Musters von CodeIgniter in Betracht ziehen, das eine strukturierterer Ansatz zur Datenbankmanipulation.

Das obige ist der detaillierte Inhalt vonWie kann ich den Erfolg einer Abfrage zum Erstellen, Aktualisieren oder Löschen in CodeIgniter zuverlässig erkennen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn