Requêtes inter-bases de données en PHP : un guide complet
Cet article aborde la question de la construction de requêtes inter-bases de données en PHP, un problème qui a été précédemment exploré dans le contexte de MySQL. Malgré la réussite de requêtes inter-bases de données dans MySQL, l'auteur est tombé sur des échecs en tentant de répliquer le processus en PHP.
Plus précisément, l'auteur remet en question les limitations imposées par mysql_select_db sur l'utilisation d'une seule base de données à la fois, ce qui rend les requêtes inter-bases de données ne sont pas pratiques. De plus, l'alternative consistant à spécifier la base de données pour chaque requête est jugée fastidieuse.
Requêtes inter-bases de données en PHP
Surmontant les limitations de mysql_select_db, l'auteur a reçu une solution qui permet des jointures directes entre bases de données :
$db = mysql_connect($host, $user, $password); mysql_select_db('my_most_used_db', $db); $q = mysql_query(" SELECT * FROM table_on_default_db a, `another_db`.`table_on_another_db` b WHERE a.id = b.fk_id ");
Dans cet exemple, la base de données spécifiée dans mysql_select_db devient la base de données par défaut pour le script. Cependant, la requête peut spécifier des tables de différentes bases de données en les référençant manuellement avec le nom de base de données approprié, comme indiqué avec another_db.table_on_another_db.
Approche alternative pour différents hôtes
Si les bases de données résident sur des hôtes différents, les jointures directes deviennent impossibles. Au lieu de cela, une approche à deux requêtes est recommandée :
$db1 = mysql_connect($host1, $user1, $password1); $db2 = mysql_connect($host2, $user2, $password2); $q1 = mysql_query(" SELECT id FROM table WHERE [..your criteria for db1 here..] ", $db1); $tmp = array(); while($val = mysql_fetch_array($q1)) $tmp[] = $val['id']; $q2 = mysql_query(" SELECT * FROM table2 WHERE fk_id in (".implode(', ', $tmp).") ", $db2);
Cette méthode consiste à effectuer deux requêtes distinctes : une sur chaque base de données. La première requête récupère les identifiants des enregistrements qui répondent aux critères de la première base de données. Ces identifiants sont ensuite utilisés comme filtre pour la deuxième requête, qui récupère les enregistrements correspondants de la deuxième base de données.
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!