这是我的代码:
$query = "SELECT SQL_CALC_FOUND_ROWS 1, id, name
FROM users where id > ?";
$sth = $this->dbh->prepare($query);
$sth->execute([4]);
echo $total_num = $this->dbh->query('SELECT FOUND_ROWS()')->fetchColumn();
//=> 43
我的代码也能正常工作并打印43
。
我的问题是,当我从SQL_CALC_FOUND_ROWS 1
语句中删除SELECT
时,为什么我的代码仍然有效?
$query = "SELECT id, name
FROM users where id > ?";
$sth = $this->dbh->prepare($query);
$sth->execute([4]);
echo $total_num = $this->dbh->query('SELECT FOUND_ROWS()')->fetchColumn();
//=> 43
请参阅?它仍会打印43
。那么SQL_CALC_FOUND_ROWS 1
语句中的SELECT
是强制性的吗?无论如何我们为什么要把它放在那里?