如何在PHP / MYSQL中将两个mysql查询作为一个执行?

2022-08-30 15:15:31

我有两个查询,如下所示:

SELECT SQL_CALC_FOUND_ROWS Id, Name FROM my_table WHERE Name LIKE '%prashant%' LIMIT 0, 10;
SELECT FOUND_ROWS();

我想在一次尝试中执行这两个查询。

$result = mysql_query($query);

但是,请告诉我,我将如何处理单独设置的每个表。实际上,在 ASP.NET 我们使用的数据集来处理两个查询

ds.Tables[0];
ds.Tables[1]; .. etc

我如何使用PHP / MYSQL做同样的事情?


答案 1

更新:显然可以通过将标志传递给 .请参阅使用 PHP 在一个语句中执行多个 SQL 查询 尽管如此,任何当前的读取器都应避免使用 -类函数,而应首选 PDO。mysql_connect()mysql_

你不能在PHP中使用常规的mysql-api来做到这一点。只需执行两个查询。第二个会很快,这无关紧要。这是微优化的典型示例。别担心。

为了记录,它可以使用mysqli和mysqli_multi_query函数来完成。


答案 2

正如其他人所回答的那样,mysqli API可以使用msyqli_multi_query()函数执行多查询。

就其价值而言,PDO 默认支持多查询,并且您可以循环访问多个查询的多个结果集:

$stmt = $dbh->prepare("
    select sql_calc_found_rows * from foo limit 1 ; 
    select found_rows()");
$stmt->execute();
do {
  while ($row = $stmt->fetch()) {
    print_r($row);
  }
} while ($stmt->nextRowset());

但是,出于安全原因,多查询被广泛认为是一个坏主意。如果你对如何构造查询字符串不小心,你实际上可以获得经典“小鲍比表”XKCD卡通片中显示的SQL注入漏洞的确切类型。当使用限制您进行单一查询的 API 时,这不会发生。


推荐