PHP PDO sqlsrv 执行多个 SELECT COUNT

PHP PDO sqlsrv executing multiple SELECT COUNT

我正处于 PDO 学习曲线的最开始,正在吸收我能学到的所有东西。请您告知以下代码是否是最佳方法。我想查找用户是否在多个 SQL 服务器 table

中有一个条目
try {
    $conn = new PDO("sqlsrv:Server=$pdoServer;Database=$pdoDatabase;", $pdoUID, $pdoPWD);
    $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );  
} catch (PDOException $e) {
    die(error_log(print_r("Could not connect to SQL Server".$e->getMessage(), TRUE), 0));
}

if (isValidUsername($username)) {
    $res_sites = $res_PR = $res_TA = array();

    try {
        $stmt_PR = $conn->prepare("SELECT Count(*) AS PRcounter FROM tbl1 WHERE usr_username=:username");
        $stmt_TA = $conn->prepare("SELECT Count(*) AS TAcounter FROM tbl2 WHERE usr_username=:username");

        $stmt_PR->bindParam(':username',$username,PDO::PARAM_STR);
        $stmt_TA->bindParam(':username',$username,PDO::PARAM_STR);

        $stmt_PR->execute();
        $stmt_TA->execute();

        $res_PR = $stmt_PR->fetch();
        $res_TA = $stmt_TA->fetch();

        $stmt_sites = $conn2->query("SELECT site_ID,site_name FROM tbl3 WHERE isDeleted IS NULL ORDER BY site_name ASC");
        while ($row = $stmt_sites->fetch(PDO::FETCH_ASSOC)){
            $res_sites[$row['site_ID']]['site_name']=$row['site_name'];
        }
    } catch (PDOException $e) {
        echo "Error occurred. Error message: ". $e->getMessage();
    }

    /* do more stuff... */
}

不出所料,返回的输出是

$res_PR: array(2) {["PRcounter"]=>string(1) "0" [0]=>string(1) "0"}
$res_TA: array(2) {["TAcounter"]=>string(1) "0" [0]=>string(1) "0"}
$res_sites: array(211) {[0]=>array(3) {["site_ID"]=>string(1) "1" ["site_name"]=>...}

这是我正在处理的几个代码部分之一。当页面加载时,我将从 7 table 秒后拉回一行。以上是否可以,还是可以准备多个语句,然后在单个 execute() 语句中执行?

非常感谢。

can the multiple statements be prepared and then executed in a single execute() statement?

没有。

即使可以,也解决不了你none的问题,因为它们与PDO无关,属于一般数据库知识,如table结构和优化。比方说,如果您将所有计数器放在一个 table 中,您肯定能够在一个查询中获取它们。如果您为用户名创建索引,它会加快速度。