본문 바로가기
Programming/PHP

[코드이그나이터] 쿼리 찍어보기

by Berasix 2022. 12. 9.
반응형

코드이그나이터에서 쿼리 찍어보기

 

개발하면서 페이지 내에서의 쿼리를 확인해봐야 할 때가 있다.

그럴 때, 아래 파일의 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

댓글