2017-06-30 32 views
1

这是我的代码如何在MySQL表计算行数(PHP PDO)

$stmt = $conn->prepare("SELECT tmdb_movies.movie_title,tmdb_movies.tmdb_id, count (tmdb_id),GROUP_CONCAT(DISTINCT genres.genres_name) AS genres_name 

FROM tmdb_movies 

JOIN genres USING (tmdb_id) 

GROUP BY tmdb_movies.movie_title,tmdb_movies.tmdb_id 

HAVING find_in_set('$category1', genres_name) AND find_in_set('$category2', genres_name) 

LIMIT $limit OFFSET $start"); 


    // Then fire it up 
    $stmt->execute(); 

// Pick up the result as an array 
$result = $stmt->fetchAll(); 

因为我无法计算,其中包括$category1并在相同的代码$category2行的总数,我添加此代码之前它。

$sql = "SELECT count(tmdb_id),group_concat(genres.genres_name) AS genres_name 

FROM `tmdb_movies` 

JOIN genres USING (tmdb_id) 
GROUP BY tmdb_movies.tmdb_id 
HAVING find_in_set('$category1', genres_name) AND find_in_set('$category2', genres_name) "; 

$result = $conn->prepare($sql); 
$result->execute(); 
$totalrows = $result->rowCount(); 
echo $totalrows; 

$totalrows echo 3 here。但是,大于3

+0

[可能的重复[查找带有偏移+限制的mySQL查询中的结果总数](https://stackoverflow.com/questions/5928611/find-total-number-of-results-in-mysql-query-with-offsetlimit ) – CBroe

回答

1

他们有更多的行要覆盖$语句执行后使用使用fetchall()

这样反而试试这个

$stmt->execute(); 
$totalrows = $stmt->rowCount(); 
echo $totalrows; 
// Pick up the result as an array 
$result = $stmt->fetchAll(); 
+0

它回显第一行的电影标题 –

+0

'致命错误:未捕获错误:调用未定义的方法PDOStatement :: fetchRow()' –

+0

您正在使用mysql的权利? – Exprator

0

尝试rowCount时()的行

的计数
$totalrows = $stmt->rowCount(); 
+0

这里的答案是10,因为限制是10. –

+0

而且它没有'count(tmdb_id)' –

+0

更新我的问题,现在看到 –

0

试试这个

$stmt = $conn->prepare("SELECT SQL_CALC_FOUND_ROWS tmdb_movies.movie_title,tmdb_movies.tmdb_id, count (tmdb_id),GROUP_CONCAT(DISTINCT genres.genres_name) AS genres_name 

FROM tmdb_movies 

JOIN genres USING (tmdb_id) 

GROUP BY tmdb_movies.movie_title,tmdb_movies.tmdb_id 

HAVING find_in_set('$category1', genres_name) AND find_in_set('$category2', genres_name) 

LIMIT $limit OFFSET $start"); 


    // Then fire it up 
    $stmt->execute(); 

// Pick up the result as an array 
$result = $stmt->fetchAll(); 
$conn->prepare('SELECT FOUND_ROWS() as COUNT'); 
$conn->execute(); 
$count = $conn->fetchColumn(); 
echo $count; //here's your total count 
+0

'致命错误:未捕获错误:调用未定义的方法PDOStatement :: prepare()在' –

+0

'致命错误:未捕获错误:调用未定义方法PDO :: execute()in'。在我的代码中,$ conn连接到数据库 –

+0

是否在原始语句中添加了“SQL_CALC_FOUND_ROWS”? – perseusl