답변:
쿼리 문자열을 표시하려면 :
print_r($this->db->last_query());
질의 결과를 표시하려면 :
print_r($query);
Profiler 클래스는 페이지 하단에 벤치 마크 결과, 실행 한 쿼리 및 $ _POST 데이터를 표시합니다. 프로파일 러를 활성화하려면 Controller 메서드 내에서 다음 줄을 배치하십시오.
$this->output->enable_profiler(TRUE);
프로파일 링 사용자 가이드 : https://www.codeigniter.com/user_guide/general/profiling.html
이것을 사용할 수 있습니다 :
$this->db->last_query();
"실행 된 마지막 쿼리 (결과가 아닌 쿼리 문자열)를 반환합니다."
Reff : https://www.codeigniter.com/userguide3/database/helpers.html
ActiveRecord 생성 SQL을 표시 할 수 있습니다.
쿼리를 실행하기 전에 :
$this->db->_compile_select();
그리고 실행 후 :
$this->db->last_query();
$this->db->get_compiled_select()
대신 사용하십시오 .
사용에 성공하지 못 _compiled_select()
하거나 get_compiled_select()
방금 db
개체를 인쇄 한 후 queries
속성 에서 쿼리를 볼 수 있습니다 .
직접 시도해보십시오.
var_dump( $this->db );
쿼리가 하나만 있다는 것을 알고있는 경우 직접 인쇄 할 수 있습니다.
echo $this->db->queries[0];
xdebug를 사용하여 VSCode에서 각 확장명과 CI v2.x로이 값을 확인합니다. 나는 $this->db->last_query()
watch 섹션에 expresion 을 추가 xdebugSettings
하고 launch.json에서 자르지 않는 값을 얻기 위해 이러한 줄과 같은 노드를 추가 합니다.
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9000,
"xdebugSettings": {
"max_data": -1,
"max_children": -1
}
},
중단 점을 사용하여 디 버버를 실행하고 마지막으로 내 표현을 선택하고 오른쪽> 값 복사를 클릭합니다.
나는 똑같은 문제가 있었고 결국 해결책을 찾았습니다. 내 쿼리는 다음과 같이 실행됩니다.
$result = mysqli_query($link,'SELECT * FROM clients WHERE ' . $sql_where . ' AND ' . $sql_where2 . ' ORDER BY acconame ASC ');
sql 명령을 표시하기 위해 내가해야 할 일은 쿼리와 똑같은 내용으로 변수 ($ resultstring)를 만든 다음 다음과 같이 에코하는 것뿐입니다.<?php echo $resultstring = 'SELECT * FROM clients WHERE ' . $sql_where . ' AND ' . $sql_where2 . ' ORDER BY acconame ASC '; ?>
효과가있다!
get_compiled_select()
쿼리를 대체하는 대신 검색 하는 데 사용
여기에서 모든 답을 읽었지만 얻을 수 없습니다.
echo $this->db->get_compiled_select();
일하기 위해 오류가 발생했습니다.
xx 라인의 컨트롤러에서 'Welcome'컨텍스트에서 보호 된 메소드 CI_DB_active_record :: _ compile_select () 호출
그래서 나는 protected
파일에서 아래 줄에서 제거 \system\database\DB_active_rec.php
했고 작동했습니다.
protected function _compile_select($select_override = FALSE)