問題:
2 つの別々の MySQL クエリを実行して処理する必要がある結果は PHP で独立して表示されます。クエリは次のとおりです:
SELECT SQL_CALC_FOUND_ROWS Id, Name FROM my_table WHERE Name LIKE '%prashant%' LIMIT 0, 10; SELECT FOUND_ROWS();
答え:
PHP の標準の mysql_ 拡張機能を使用すると、複数のクエリを 1 つのトランザクションとして実行することはできません。ただし、次の手順に従うことで、望ましい結果を得ることができます:
$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];
これらの手順に従うことで、両方のクエリを独立して実行し、その結果を個別に処理できます。このアプローチは、単一のトランザクションとして実行するほど効率的ではありませんが、mysql_ 拡張機能を使用して目的の結果を達成する唯一の方法であることに注意してください。
代替ソリューション (非推奨):
Update: 以前は、フラグ付きの mysql_connect() 関数。ただし、このメソッドは非推奨であるため、使用しないでください。
最新のソリューション:
最新の PHP アプリケーションの場合、PDO (PHP Data) を使用することをお勧めします。 Objects) データベース対話用の拡張機能。 PDO は、SQL クエリを実行し、その結果を取得するための、よりオブジェクト指向で一貫性のある方法を提供します。 PDO を使用すると、次のように 2 つのクエリを実行できます:
$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();
このソリューションは、古い mysql_ 拡張機能よりも効率的で使いやすいです。
以上がPHP で複数の MySQL クエリを個別に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。