Maison >développement back-end >tutoriel php >Comment puis-je exécuter plusieurs requêtes MySQL indépendamment en PHP ?
Problème :
Vous devez exécuter deux requêtes MySQL distinctes et gérer leurs résultats indépendamment en PHP. Les requêtes sont :
SELECT SQL_CALC_FOUND_ROWS Id, Name FROM my_table WHERE Name LIKE '%prashant%' LIMIT 0, 10; SELECT FOUND_ROWS();
Réponse :
En utilisant l'extension mysql_ standard en PHP, il n'est pas possible d'exécuter plusieurs requêtes en une seule transaction. Cependant, vous pouvez obtenir le résultat souhaité en suivant ces étapes :
$query1 = "SELECT SQL_CALC_FOUND_ROWS Id, Name FROM my_table WHERE Name LIKE '%prashant%' LIMIT 0, 10;"; $result1 = mysql_query($query1);
$query2 = "SELECT FOUND_ROWS();"; $result2 = mysql_query($query2);
$rows1 = mysql_fetch_all($result1, MYSQL_ASSOC);
$totalRows = mysql_fetch_row($result2)[0];
En suivant ces étapes, vous pouvez exécuter les deux requêtes indépendamment et gérer leurs résultats séparément. Notez que cette approche n'est pas aussi efficace que de les exécuter en une seule transaction, mais c'est le seul moyen d'obtenir le résultat souhaité en utilisant l'extension mysql_.
Solution alternative (obsolète) :
Mise à jour : On pensait auparavant qu'il était possible d'exécuter plusieurs requêtes dans une seule instruction en utilisant la fonction mysql_connect() avec un drapeau. Cependant, cette méthode est obsolète et ne doit pas être utilisée.
Solution moderne :
Pour les applications PHP modernes, il est recommandé d'utiliser le PDO (PHP Data Objets) extension pour les interactions avec la base de données. PDO fournit un moyen plus orienté objet et plus cohérent d'exécuter des requêtes SQL et de récupérer leurs résultats. En utilisant PDO, vous pouvez exécuter les deux requêtes comme suit :
$pdo = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password'); $stmt1 = $pdo->prepare($query1); $stmt2 = $pdo->prepare($query2); $stmt1->execute(); $rows1 = $stmt1->fetchAll(PDO::FETCH_ASSOC); $stmt2->execute(); $totalRows = $stmt2->fetchColumn();
Cette solution est plus efficace et plus facile à utiliser que l'ancienne extension mysql_.
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!