作为背景说明,在MySQL中,使用SQL_CALC_FOUND_ROWS标志和FOUND_ROWS()函数可以让您检索到如果SELECT未使用LIMIT将返回的行数总数,而无需发出第二个繁重的查询:
$query = "SELECT SQL_CALC_FOUND_ROWS * from movies
WHERE....
LIMIT 20";
$res1 = $db->query($query);
$numrows = $db->query('SELECT FOUND_ROWS()')->fetchColumn();
这对于分页非常有用。假设你正在使用持久连接:
try{
$db = new PDO('mysql:host=localhost;dbname=' . $dbname, $user, $pass,
array( PDO::ATTR_PERSISTENT => true )
);
etc.
如果两个用户几乎同时点击,是否有可能请求会相互交叉,导致一个用户得到另一个用户所请求的数据?