Maison >base de données >tutoriel mysql >Comment puis-je importer en toute sécurité un fichier .sql dans MySQL à l'aide de PHP ?

Comment puis-je importer en toute sécurité un fichier .sql dans MySQL à l'aide de PHP ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-06 21:20:13459parcourir

How Can I Safely Import a .sql File into MySQL Using PHP?

Importation d'un fichier .sql dans une base de données MySQL à l'aide de PHP

Lorsque vous tentez d'importer un fichier .sql dans une base de données MySQL à l'aide de PHP, un message d'erreur est souvent rencontré, signalant un problème lors de l'importation. Ce message d'erreur inclut des détails sur le nom de la base de données, le nom d'utilisateur, le mot de passe, le nom d'hôte et le nom du fichier d'importation.

Le code fourni dans la question utilise les fonctions mysql_*, qui sont obsolètes depuis PHP 5.5.0. et supprimé dans PHP 7.0.0. Au lieu de cela, des API MySQL alternatives telles que mysqli ou PDO_MySQL doivent être utilisées.

Méthode d'importation alternative utilisant le client MySQL

Déléguer le processus d'importation de fichiers au client MySQL est généralement une approche plus fiable. MySQL fournit des outils de ligne de commande capables de gérer efficacement les importations.

Code PHP amélioré pour importer un fichier .sql

Un code PHP alternatif utilisant une méthode d'importation plus appropriée est fourni. ci-dessous :

<?php

// File name
$filename = 'churc.sql';
// MySQL host
$mysql_host = 'localhost';
// MySQL username
$mysql_username = 'root';
// MySQL password
$mysql_password = '';
// Database name
$mysql_database = 'dump';

// Establish MySQL connection
$mysqli = new mysqli($mysql_host, $mysql_username, $mysql_password, $mysql_database);
if ($mysqli->connect_error) {
    echo 'Error connecting to MySQL: ' . $mysqli->connect_error;
    exit;
}

// Read entire file
$lines = file($filename);

// Process each line
foreach ($lines as $line) {
    // Skip comments and empty lines
    if (substr($line, 0, 2) == '--' || $line == '') {
        continue;
    }

    // Execute query
    if ($mysqli->query($line)) {
        echo 'Query successfully executed: ' . $line . '<br>';
    } else {
        echo 'Error executing query: ' . $line . '<br>';
    }
}
echo 'Tables imported successfully';
$mysqli->close();

?>

Ce code amélioré utilise l'extension mysqli pour se connecter à MySQL et exécuter les requêtes à partir de la ligne de fichier .sql en ligne.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn