Maison >base de données >tutoriel mysql >Puis-je simplement remplacer « mysql_ » par « mysqli_ » dans mon code PHP ?
L'obsolescence et la suppression éventuelle des fonctions mysql_ de PHP ont soulevé la question : peuvent-elles être remplacées de manière transparente par mysqli_ ? Bien qu'il puisse être tentant de supposer une équivalence, la réponse est un non catégorique.
Heureusement, pour ceux qui disposent d'un code existant étendu utilisant les fonctions mysql_, il existe un convertisseur outil (https://github.com/philip/MySQLConverterTool) qui peut automatiser la plupart du processus de conversion. Cela peut fournir une fonctionnalité immédiate, permettant aux scripts de s'exécuter comme prévu.
Au-delà de la solution temporaire offerte par l'outil de conversion, il est prudent de migrer vers une solution orientée objet. méthodologie d'interaction avec les bases de données. Cette approche offre plusieurs avantages, notamment une organisation et une maintenabilité améliorées du code.
Dans mysqli_, l'établissement d'une connexion implique de créer un nouvel objet mysqli et de l'attribuer à une variable PHP. Par exemple :
$mysqli = new mysqli($host, $username, $password, $database);
Assurez-vous d'activer le rapport d'erreurs pour mysqli_ avant d'ouvrir la connexion :
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
Toutes les fonctions mysqli_ nécessitent désormais la connexion comme premier argument dans le code procédural ou comme méthode objet dans le code orienté objet. Pour exécuter une requête, le code ressemblerait à ceci :
Procédural :
$result = mysqli_query($mysqli, $sql);
Orienté objet :
$result = $mysqli->query($sql);
La récupération des résultats reste largement inchangée dans mysqli_ par rapport à son homologue mysql_.
Procédural :
while ($row = mysqli_fetch_assoc($result))
Orienté objet :
while ($row = $result->fetch_assoc())
Fermer correctement la connexion est essentiel, et le processus reste cohérent avec mysql_ dans mysqli_ :
Procédural :
mysqli_close($mysqli);
Orienté objet :
$mysqli->close();
La migration de mysql_ vers mysqli_ implique la conversion de toutes les fonctions associées, y compris celles de fermeture de connexion, de publication des résultats, de gestion des erreurs et de comptage de lignes.
N'oubliez pas que même si la conversion initiale peut nécessiter quelques le travail manuel, l'adoption de l'approche orientée objet peut générer des avantages à long terme pour votre base de code. Ainsi, même si remplacer aveuglément les fonctions mysql_ par mysqli_ n'est pas une solution idéale, cela peut être un tremplin vers une base de code PHP plus moderne et plus maintenable.
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!