Zum Inhalt springen

Ein umfassender Leitfaden zur mysqli_set_local_infile_handler-Funktion in

Die mysqli-Erweiterung bietet eine Vielzahl von Funktionen zur Interaktion mit MySQL-Datenbanken. Eine solche Funktion ist mysqli_set_local_infile_handler, mit der Sie eine Callback-Funktion zum Verarbeiten von LOAD DATA LOCAL INFILE-Anfragen festlegen können. Diese Funktion ist seit PHP 5.3 verfügbar und erfordert die mysqli-Erweiterung.

Dieser Leitfaden erläutert, wie die Funktion funktioniert und wie Sie sie effektiv in Ihren PHP-Projekten einsetzen können.

Was ist mysqli_set_local_infile_handler Function?

mysqli_set_local_infile_handler ist eine integrierte PHP-Funktion, die eine benutzerdefinierte Callback-Funktion zur Verarbeitung von LOAD DATA LOCAL INFILE-Anfragen festlegt. Sie erwartet zwei Argumente:

  • Das MySQL-Verbindungsobjekt (typischerweise zurückgegeben von mysqli_connect oder new mysqli).
  • Die Callback-Funktion zur Verarbeitung der Anfrage.

Hier ist die Syntax der mysqli_set_local_infile_handler-Funktion:

The PHP syntax of mysqli_set_local_infile_handler Function

php
mysqli_set_local_infile_handler($connection, callable $callback);

Funktionen der mysqli_set_local_infile_handler Function

Die Funktion mysqli_set_local_infile_handler bietet eine zuverlässige Möglichkeit, LOAD DATA LOCAL INFILE-Anfragen in PHP abzufangen und zu verarbeiten. Zu den wichtigsten Funktionen gehören:

1. Benutzerdefinierte Datenverarbeitung

Das Hauptmerkmal besteht darin, dass Sie eine benutzerdefinierte Funktion zur Verarbeitung von Anfragen zum Laden von Daten aus einer lokalen Datei in eine MySQL-Tabelle angeben können. Dies ist nützlich, wenn Sie vor dem Laden der Daten in die Tabelle eigene Validierungen, Protokollierungen oder Datentransformationen durchführen möchten.

2. Funktioniert mit bestehenden Verbindungen

Sie können den Handler an jedes aktive mysqli-Verbindungsobjekt anhängen. Wenn Sie bereits eine bestehende Verbindung haben, können Sie dasselbe Objekt verwenden, um eine benutzerdefinierte Callback-Funktion für die Verarbeitung von LOCAL INFILE-Anfragen festzulegen.

So verwenden Sie mysqli_set_local_infile_handler Function

Im Folgenden finden Sie einige Schritte, um die Funktion mysqli_set_local_infile_handler in Ihren PHP-Projekten zu verwenden:

1. Verbindung zum MySQL-Server herstellen

Bevor Sie die Funktion mysqli_set_local_infile_handler verwenden können, müssen Sie eine Verbindung zum MySQL-Server herstellen. Für moderne PHP-Projekte wird der objektorientierte Konstruktor empfohlen:

How to Use mysqli_set_local_infile_handler Function?

php
<?php

$host = 'localhost';
$user = 'username';
$password = 'password';
$database = 'mydatabase';

$connection = new mysqli($host, $user, $password, $database);

if ($connection->connect_error) {
    die('Connection failed: ' . $connection->connect_error);
}

2. Callback-Funktion festlegen

Sobald Sie eine Verbindung zum MySQL-Server hergestellt haben, können Sie die Funktion mysqli_set_local_infile_handler verwenden, um eine Callback-Funktion zur Verarbeitung von LOCAL INFILE-Anfragen festzulegen.

Wichtig: Damit dieser Handler ausgelöst wird, muss die MySQL-Server-Systemvariable local_infile aktiviert sein (SET GLOBAL local_infile = 1;). Darüber hinaus birgt LOAD DATA LOCAL INFILE Sicherheitsrisiken (z. B. unbefugter Dateizugriff), daher sollte es nur bei Bedarf und entsprechend gesichert verwendet werden.

Hier ist ein Beispielcode-Snippet:

Example of PHP mysqli_set_local_infile_handler Function

php
<?php

function custom_local_infile_handler($link, $file) {
    // Open the file and return a resource handle
    $fp = fopen($file, 'r');
    if (!$fp) {
        return false;
    }
    return $fp; // Must return a valid file resource handle
}

if (mysqli_set_local_infile_handler($connection, 'custom_local_infile_handler')) {
    echo "Callback function set successfully.";
} else {
    echo "Error setting callback function: " . mysqli_error($connection);
}

Dieser Code legt eine benutzerdefinierte Callback-Funktion namens custom_local_infile_handler fest, die LOCAL INFILE-Anfragen für die MySQL-Verbindung verarbeitet. Der Callback muss im Erfolgsfall einen gültigen Dateiresource-Handle zurückgeben oder im Fehlerfall false.

3. Auslösen des Handlers

Der Callback wird automatisch aufgerufen, wenn Sie eine LOAD DATA LOCAL INFILE-Anweisung über mysqli_query ausführen:

Triggering the Handler with mysqli_query

php
<?php

$sql = "LOAD DATA LOCAL INFILE '/path/to/your/data.csv' INTO TABLE my_table FIELDS TERMINATED BY ','";
$result = mysqli_query($connection, $sql);

if ($result) {
    echo "Data loaded successfully.";
} else {
    echo "Error loading data: " . mysqli_error($connection);
}

Fazit

Zusammenfassend bietet mysqli_set_local_infile_handler Ihnen die volle Kontrolle darüber, wie lokale Dateidaten in MySQL importiert werden. Durch die Implementierung eines benutzerdefinierten Callbacks können Sie den Dateizugriff sicher verwalten, Datentransformationen anwenden und detaillierte Protokolle führen, sodass Masseneinfügungen mit den Sicherheits- und Geschäftsregeln Ihrer Anwendung übereinstimmen.

Practice

Was ist der Hauptzweck der set_local_infile_handler-Funktion in PHP?

Finden Sie das nützlich?

Dual-run-Vorschau — vergleichen Sie mit den Symfony-Routen live.