반응형
코드이그나이터에서 쿼리 찍어보기
개발하면서 페이지 내에서의 쿼리를 확인해봐야 할 때가 있다.
그럴 때, 아래 파일의 query() 함수를 찾아 찍어볼 수 있다.
개발 모드에서만 사용하도록 하자.
vendor\codeigniter4\framework\system\Database\BaseConnection.php
public function query(string $sql, $binds = null, bool $setEscapeFlags = true, string $queryClass = '')
{
// 쿼리찍기 (1)
echo $sql."<br>";
$queryClass = $queryClass ?: $this->queryClass;
if (empty($this->connID)) {
$this->initialize();
}
/**
* @var Query $query
*/
$query = new $queryClass($this);
$query->setQuery($sql, $binds, $setEscapeFlags);
if (! empty($this->swapPre) && ! empty($this->DBPrefix)) {
$query->swapPrefix($this->DBPrefix, $this->swapPre);
}
// 쿼리찍기 (2)
echo $query."<br>";
$startTime = microtime(true);
쿼리 찍기 (1)에서는 아래와 같은 쿼리가
UPDATE `users` SET `last_active` = :last_active: WHERE `id` = :id:
쿼리 찍기 (2)에서는 완전한 쿼리를 볼 수 있다.
UPDATE `users` SET `last_active` = '2022-12-09 01:47:46' WHERE `id` = 1
저렇게 찍으면, 페이지 확인 시 지저분하니 아래와 코드를 이용해 로그로 남겨도 좋다.
$out = fopen("c:\프로젝트디렉토리\query.log", "a");
fwrite($out, str_replace("\n", "", $query)."\n");
fclose($out);
이 글은 필자가 분석, 공부하면서 작성한 포스트입니다.
잘못된 부분에 대해 알려주시면 수정하도록 하겠습니다.
728x90
'Programming > PHP' 카테고리의 다른 글
php8.0.2 + ciboard + dompdf + 한글폰트적용 (0) | 2023.01.21 |
---|---|
[코드이그나이터] 세션을 데이터베이스에 남기기 (0) | 2022.12.28 |
[코드이그나이터] 리스트, 페이징 추가, 페이징 레이아웃 변경하기 (0) | 2022.11.15 |
[코드이그나이터] redirect 사용하기 (0) | 2022.11.14 |
[코드이그나이터] 설치시 require ext-intl * -> it is missing from your system. Install or enable PHP's intl extension 오류 (0) | 2022.11.14 |
댓글