gpt4 book ai didi

php - PDO SELECT 的 SELECT COUNT(*) 和 SELECT COUNT(主键)

转载 作者:行者123 更新时间:2023-11-29 13:17:04 25 4
gpt4 key购买 nike

我有一个登录脚本,它获取用户的电子邮件/密码组合,对其运行选择查询,并在返回的结果数超过 1 时让用户登录。

脚本示例:

require("dbconnection.inc");
$email=$_POST['email'];
$pw=$_POST['pw'];
$login=$connection->prepare("SELECT `Password` FROM `Users` WHERE `Email`=:email");
$login->bindValue(":emailuser",$loginemail);
$login->execute();
$verifyemail=$loginuser->rowCount();
if($verifyemail > 0)
{
//Login user
}

但是,我在 PHP 手册中看到 rowCount() 不应该与 PDO 一起使用,因为并非所有数据库都支持它,并且

$count = $pdo->query('select count(*) FROM blah WHERE blah')->fetchColumn(); 
echo $count;

应该使用。

但是,这让我想知道是否可以简单地使用 count(PrimaryKey) 而不是 count(*)。是否可以使用 count(PrimaryKey) ) 而不是 count(*) ,是否有任何缺点?

P.S 我目前正在使用 MYSQL,rowCount 工作正常,我不确定是否应该将当前代码更改为 COUNT(*)

最佳答案

来自sql_func_count

SQL COUNT(column_name) 语法

COUNT(column_name)函数返回指定列的值的数量(NULL值不被计算在内):

SELECT COUNT(column_name) FROM table_name;

SQL COUNT(*) 语法

COUNT(*) 函数返回表中的记录数:

SELECT COUNT(*) FROM table_name;

SQL COUNT(DISTINCT 列名) 语法

COUNT(DISTINCT column_name) 函数返回指定列的不同值的数量:

SELECT COUNT(DISTINCT column_name) FROM table_name;

注意:COUNT(DISTINCT) 适用于 ORACLE 和 Microsoft SQL Server,但不适用于 Microsoft Access。

MySQL:

如果是 mysql,请阅读MySQL 性能博客中的以下文章 COUNT(*) vs COUNT(col)

关于php - PDO SELECT 的 SELECT COUNT(*) 和 SELECT COUNT(主键),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21328342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com