php 모든 데이터베이스 테이블의 행 개수 구하기
조회수 668회
데이터베이스 안의 모든 행의 개수를 구하려고 합니다. 지금 은
$sql = "SELECT table_name , table_rows FROM INFROMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = '테이블 이름';
$res = mysqli_query($conn, $sql);
echo json_encode(array("RES" => $res));
이 코드를 사용중인데
RES":{"current_field":null,"field_count":null,"lengths":null,"num_rows":null,"type",null};
이런 코드로 반환이 됩니다..
+------------------+-----------------+
| table_name | exact_row_count |
+------------------+-----------------+
| func | 0 |
| general_log | 0 |
| help_category | 37 |
| help_keyword | 450 |
| help_relation | 990 |
| help_topic | 504 |
| host | 0 |
| ndb_binlog_index | 0 |
+------------------+-----------------+
이런식의 결과값을 json 으로 받아오는 방법이 있을까요??
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
사실 원하시는 결과셋 자체는 순수 MySQL구문 쿼리 1개만으로도 얻을 수 있는 모양입니다만, 뭔가
GROUP_CONCAT()
이니INTO @sql
이니 하는 낯선 것도 많고... 기왕 PHP 태그가 달려 있으니... 한번 PHP를 써보죠.상기 링크된 참조정보도 그렇고 핵심 아이디어는 이 작업을 2단계로 나눠서 하자는 겁니다.
- 테이블 일람을 구한다.
- 각각
count(*)
를 한다.
$rows_per_tables = []; $sql1 = 'SELECT table_name FROM information_schema.tables WHERE table_schema = :schema AND table_type = :type'; $query1 = $pdo->prepare($sql1); $query1->execute([ 'schema' => DB스키마이름, 'type' => 'BASE_TABLE' ]); while ($row = $query1->fetch()) { $table = $row['table_name']; $sql2 = 'SELECT COUNT(*) as rows FROM :table'; $query2 = $pdo->prepare($sql2); $query2->execute(compact('table')); $count = $query2->fetch(); $exact_row_count = $count['rows']; $rows_per_tables[] = compact('table', 'exact_row_count'); } echo json_encode(['RES' => $rows_per_tables]);
댓글 입력