문제

최근에 PHP5를 사용하여 새로운 프로젝트 작업을 시작했으며 PDO 클래스를 사용하려고합니다. 문제는 MySQL PDO 드라이버가 rowCount ()를 지원하지 않으므로 쿼리를 실행 한 다음 영향을받는 행 또는 행을 반환 할 수있는 방법이 없다는 것입니다. 다른 사람이 이전에 이것을 다루었고 당신이 그 일을하기 위해 무엇을했는지 궁금합니다. 행이 영향을 받거나 반환되었는지 확인하기 위해 Fetch () 또는 FetchAll ()을 수행 해야하는 것은 나에게 해킹처럼 보인다.

도움이 되었습니까?

해결책

당신은 a를 발행 할 수 있습니다 SELECT FOUND_ROWS() 원본 직후에 쿼리 SELECT 행 카운트를 얻으려면 쿼리.

$pdo->query("SELECT * FROM users");
$foundRows = $pdo->query("SELECT FOUND_ROWS()")->fetchColumn();

또한보십시오: found_rows ()의 mysql 문서

다른 팁

MySQL 저장 절차를 사용하는 분들에게는이 솔루션이 실제로 가능하지 않습니다. 내가 제안하는 것은 저장된 절차에 두 개의 행 세트를 만드는 것입니다. 첫 번째는 레코드 수를 포함하는 한 행과 하나의 열이 포함됩니다. 두 번째는 해당 행 수를 가져 오기 위해 사용할 레코드 세트입니다.

무제한 행의 수는 a SELECT COUNT(*) 똑같이 WHERE 없는 두 번째 행 세트로 조항 LIMIT/OFFSET 조항.

또 다른 아이디어는 임시 테이블을 만드는 것입니다. 당신의 사용 SELECT 임시 테이블을 채우는 진술. 그런 다음 사용할 수 있습니다 SELECT COUNT(*) FROM tmpTable 첫 번째 행 세트를 위해 SELECT * FROM tmpTable 두 번째.

이 질문은 몇 가지 잘못된 가정과 하나의 구식 진술에 근거합니다.

우선, 혼동하지 마십시오 체하는 그리고 선택된 줄. PDO는 '09 년에도 전자를지지했다.

Select 문에 의해 반환 된 행의 수에 대해 말하면 - 해당 숫자가 필요하지 않습니다. 당신이 가진 데이터로 충분합니다.

그리고 예, 요즘 rowCount() MySQL에서 선택된 행 수를 지원합니다. 그러나 다시 - 당신은 어쨌든 평균 웹 응용 프로그램에서 그 숫자가 필요하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top