同一页面上具有相同变量的多个查询

时间:2017-03-11 12:29:27

标签: php mysql pdo

问题1

好的,我需要清除一个混乱。我在同一页面上有多个查询。

$abc = $pdo->prepare("SELECT COUNT(*) FROM tablename");
$abc-> execute();
$count1 = $abc->fetchColumn();

$bcd = $pdo->prepare("SELECT COUNT(*) FROM tablename");
$bcd-> execute();
$count2 = $bcd->fetchColumn();

$def = $pdo->prepare("SELECT COUNT(*) FROM tablename");
$def-> execute();
$count3 = $def->fetchColumn();

这很好用。但是为每个查询声明一个新名称有点让我感到恼火。因此,我认为如果所有查询都可以写在同一个变量中,那会不会很好?那么,如果我只在一个变量中编写这些查询,那会是错误的吗?如下面的代码。

$stmt = $pdo->prepare("SELECT COUNT(*) FROM tablename");
$stmt-> execute();
$count1 = $stmt->fetchColumn();

$stmt = $pdo->prepare("SELECT COUNT(*) FROM tablename");
$stmt-> execute();
$count2 = $stmt->fetchColumn();

$stmt = $pdo->prepare("SELECT COUNT(*) FROM tablename");
$stmt-> execute();
$count3 = $stmt->fetchColumn();

以同样的方式编写查询会在将来出现错误吗?在同一个变量中写入是否安全?有什么区别吗?哪种方法更好?

问题2

要获得$count1, $count2 and $count3,我必须传递三个不同的查询。但我更喜欢尽可能少地编写查询以防止使用大量资源。那么,有必要这样做吗?或者,是否可以在一个查询中获取所有内容?如果是,那怎么办?

请帮我澄清这些疑惑。

1 个答案:

答案 0 :(得分:0)

只要您确定不会使用第一个变量,就可以使用它的名称来定义另一个变量。

然而,取消设置未使用的变量是一个好习惯。

对于您的第二个问题,您可以使用Unions在一个查询中合并三个查询,如下所示: 我假设你要求那些特定的三个查询

SELECT COUNT(*) FROM `table1`
UNION
SELECT COUNT(*) FROM `table2`
UNION
SELECT COUNT(*) FROM `table3`