2 votes

PHP Connecter à MySQL : Quand créer une connexion

Au fur et à mesure que j'apprends à connaître PHP et MySQL, je ne sais plus quand il faut créer une connexion au serveur. Je me demande si je dois créer une nouvelle connexion à chaque fois que je fais une nouvelle requête. Par exemple, dois-je créer deux connexions si je veux mettre à jour certaines données, en utilisant les codes ci-dessous ? Quelqu'un peut-il m'expliquer le mécanisme ? Merci !

$db_con2=new mysqli(DB_HOST,DB_USERNAME,DB_PASSWORD,DB_NAME);
$db_con=new mysqli(DB_HOST,DB_USERNAME,DB_PASSWORD,DB_NAME);

if($db_con){

    some operations omitted

    $stmt = $db_con2->prepare("");
    $stmt->bind_param();
    $stmt->execute();   
}

mysqli_close($db_con2);
mysqli_close($db_con);

3voto

Dinu Points 1165
  1. Vous pouvez utiliser une seule connexion pour différentes bases de données, en utilisant un identifiant de table entièrement qualifié, par exemple : database1.table1
  2. Il n'est pas recommandé de créer plus de connexions que nécessaire (généralement une seule), car cela génère plus de frais généraux et il existe également un plafond pour le nombre de connexions parallèles (il peut y avoir plusieurs demandes x plusieurs connexions).
  3. La seule chose que vous ne pouvez pas faire sur une seule connexion dans MySQL est d'exécuter deux curseurs en parallèle. Cela signifie que, si la requête 1 est une sélection, vous devez récupérer le jeu d'enregistrements complet de la requête 1 avant de lancer la requête 2. Vous ne pouvez pas lancer la requête 2 (autres sélections ou mises à jour) tout en itérant sur les résultats de la requête 1. Ceci n'est vrai que si vous utilisez des requêtes non tamponnées. Pour les requêtes en mémoire tampon, PHP lit et met en cache de manière transparente tous les jeux d'enregistrements. Vous pouvez vous intéresser à ce sujet si vous avez besoin de requêtes non tamponnées ; pour plus d'informations : https://www.php.net/manual/en/mysqlinfo.concepts.buffering.php

2voto

Martin Points 45

Considérez la connexion comme la variable. $db_con comme votre connexion et vous l'établissez au début de chaque nouveau script, (en utilisant une classe ou un fichier inclus dans votre script), et ensuite vous pouvez exécuter toutes les requêtes SQL dont vous avez besoin sur cette même variable.

Tu le fais. pas Il n'est pas nécessaire de fermer manuellement la connexion MySQLi, car celle-ci est automatiquement fermée lorsque la fin du script est atteinte. Ainsi, en mettant $db_con->close() ( c'est la syntaxe correcte ) sur les dernières lignes de votre script n'est pas nécessaire.

Un script typique aurait une classe ou un fichier inclus qui a les données de connexion ; en haut du script, puis cela est utilisé tout au long du script et tous les détails sont oubliés à la fin du script automatiquement.

Ne confondez pas non plus avec Procédure y Orienté objet interactions. Vous utilisez actuellement la méthode orientée objet, mais votre mysqli_close() est un appel de fonction Procédure et ces deux méthodes ne sont pas interactives l'une avec l'autre.

1voto

Jitendra Ahuja Points 514

Tout ce que vous devez faire est de créer un fichier différent pour l'objet de connexion, et de l'utiliser partout où cela est nécessaire en incluant ce fichier, dans le fichier dans lequel vous voulez l'objet de connexion, si vous êtes sûr d'utiliser le même HOST, DB et ses tables dans tout votre projet.

De cette façon, vous pouvez économiser votre ligne de code (LOC) et la rendre optimale, ce qui vous fera gagner du temps et vous épargnera un travail fastidieux.

Il n'est pas non plus nécessaire de fermer la connexion à chaque fois. Ce qui suit est facultatif :

mysqli_close(CONNECTION_OBJECT);

0voto

Nilesh Points 79

Veuillez modifier votre connexion en conséquence :

$mysqli_c1 = new mysqli($hostname, $username, $password, $database1); 
$mysqli_c2 = new mysqli($hostname, $username, $password, $database2); 

Utilisation de la base de données 1 :

$mysqli_c1->query('select * from tablename');

En utilisant la base de données2 :

$mysqli_c2->query('select * from tablename');

Selon votre code :

if($mysqli_c1->connect_errno){
   //Error handle code here
}else{
   //success code here
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X