복붙노트

[SQL] CodeIgniter의 모델에서 SQL 문을 인쇄하는 방법

SQL

CodeIgniter의 모델에서 SQL 문을 인쇄하는 방법

나는 나의 모델의 SQL 문을

나는 그 말을

$query = $this->db->query($sql, array(fields, fields1);

if ($query) {
    return true:
} else {
    echo "failed";
    return false;
}

내 쿼리는 항상 내가 어떻게 내 데이터베이스로 전송되는 정확한 SQL 문을 인쇄 할 수 PHP를받을 수 있나요 실패? 그리고 내 PHP는보기 페이지가 표시

해결법

  1. ==============================

    1.쿼리 문자열을 표시하려면 :

    쿼리 문자열을 표시하려면 :

    print_r($this->db->last_query());    
    

    쿼리 결과를 표시하려면 :

    print_r($query);
    

    프로파일 러 클래스는 페이지의 하단에 실행 한 쿼리 및 $ _POST 데이터를 벤치 마크 결과를 표시합니다. 프로파일 장소 귀하의 컨트롤러 방법 내에서 다음 줄의 어느 곳을 사용하려면 :

    $this->output->enable_profiler(TRUE);
    

    사용자 설명서를 프로파일 링 : https://www.codeigniter.com/user_guide/general/profiling.html

  2. ==============================

    2.당신은이를 사용할 수 있습니다 :

    당신은이를 사용할 수 있습니다 :

    $this->db->last_query();
    

    "마지막으로 실행 된 쿼리 (쿼리 문자열이 아닌 결과를) 반환합니다."

    REFF : https://www.codeigniter.com/userguide3/database/helpers.html

  3. ==============================

    3.당신은 액티브 생성 된 SQL을 표시 할 수 있습니다 :

    당신은 액티브 생성 된 SQL을 표시 할 수 있습니다 :

    쿼리를 실행하기 전에 :

    $this->db->_compile_select(); 
    

    그리고 그것은 실행 후 :

    $this->db->last_query(); 
    
  4. ==============================

    4.당신이 당신의 쿼리를 빠르게 검사가 필요한 경우,이 나를 위해 좋은 작품

    당신이 당신의 쿼리를 빠르게 검사가 필요한 경우,이 나를 위해 좋은 작품

    echo $this->db->last_query(); die;
    
  5. ==============================

    5.사용 _compiled_select () 또는 get_compiled_select에 성공하지 않고 시도 후 () 난 그냥 DB 객체를 인쇄, 당신은 쿼리 속성에서 쿼리가를 볼 수 있습니다.

    사용 _compiled_select () 또는 get_compiled_select에 성공하지 않고 시도 후 () 난 그냥 DB 객체를 인쇄, 당신은 쿼리 속성에서 쿼리가를 볼 수 있습니다.

    스스로를보십시오 :

    var_dump( $this->db );
    

    당신은 당신이 단 하나 개의 쿼리를 알고 있다면, 당신은 그것을 직접 인쇄 할 수 있습니다 :

    echo $this->db->queries[0];
    
  6. ==============================

    6.당신은 단순히 말에 이것을 사용할 수 있습니다 ..

    당신은 단순히 말에 이것을 사용할 수 있습니다 ..

    echo $this->db->last_query();
    
  7. ==============================

    7.를 실행하기 전에 쿼리를 인쇄 할 수있는 새로운 공공 방법 get_compiled_select이있다. _compile_select은 그러므로 이제 보호를 사용할 수 없습니다.

    를 실행하기 전에 쿼리를 인쇄 할 수있는 새로운 공공 방법 get_compiled_select이있다. _compile_select은 그러므로 이제 보호를 사용할 수 없습니다.

    echo $this->db->get_compiled_select(); // before $this->db->get();
    
  8. ==============================

    8.페드로의 코드에 약간의 변화가 잘 나를 위해 작동하므로 어느 last_query () 또는 get_compiled_select는 (), 나를 위해 작동합니다. 포함하지 마십시오 -) (> GET ->의 get () 빌드에서, 이것은 이전이어야합니다

    페드로의 코드에 약간의 변화가 잘 나를 위해 작동하므로 어느 last_query () 또는 get_compiled_select는 (), 나를 위해 작동합니다. 포함하지 마십시오 -) (> GET ->의 get () 빌드에서, 이것은 이전이어야합니다

     echo $this->EE->db->_compile_select();
    
  9. ==============================

    9.는 SQL이 wrong.So 나는이 같은 새로운 접근 방식을 발견하기 때문에, 나는 Chumillas의 대답 @ 및 chhameed의 대답 @하려고하지만,하지 작업 :

    는 SQL이 wrong.So 나는이 같은 새로운 접근 방식을 발견하기 때문에, 나는 Chumillas의 대답 @ 및 chhameed의 대답 @하려고하지만,하지 작업 :

  10. ==============================

    10.인쇄 할 쿼리 후이 라인의 권리를 추가합니다.

    인쇄 할 쿼리 후이 라인의 권리를 추가합니다.

    예:

    쿼리 = $는 $ this-> db-> query ( '표 WHERE 조건 SELECT *');

    이 줄을 추가 //.

    위해서 var_dump ($ this-> DB-> last_query ());

    출구();

    또는

    에코 $ this-> DB-> last_query ();

  11. ==============================

    11.각각의 확장 및 CI의 v2.x.와 VSCode에서이 값을 보는 동안 나는 Xdebug는을 사용하고 있습니다 나는 expresion의 $를 추가 this-> DB-> last_query () 시계 섹션에서, 나는이 launch.json에서 GET 비 잘라 내기 값이 라인처럼 xdebugSettings에게 노드를 추가 할 수 있습니다.

    각각의 확장 및 CI의 v2.x.와 VSCode에서이 값을 보는 동안 나는 Xdebug는을 사용하고 있습니다 나는 expresion의 $를 추가 this-> DB-> last_query () 시계 섹션에서, 나는이 launch.json에서 GET 비 잘라 내기 값이 라인처럼 xdebugSettings에게 노드를 추가 할 수 있습니다.

    {
      "name": "Launch currently open script",
      "type": "php",
      "request": "launch",
      "program": "${file}",
      "cwd": "${fileDirname}",
      "port": 9000,
      "xdebugSettings": {
        "max_data": -1,
        "max_children": -1
      }
    },
    

    그리고 값을 복사> 중단 점 내 디버거를 실행하고 마지막으로 단지 표현에 의해 선택하고 마우스 오른쪽 버튼을 클릭 않습니다.

  12. ==============================

    12.나는 정확히 같은 문제가 있었 결국 해결책을 발견했다. 내 쿼리는 같은 실행 :

    나는 정확히 같은 문제가 있었 결국 해결책을 발견했다. 내 쿼리는 같은 실행 :

    $result = mysqli_query($link,'SELECT * FROM clients WHERE ' . $sql_where . ' AND ' . $sql_where2 . ' ORDER BY acconame ASC ');
    

    SQL 명령을 표시하기 위해, 모두 내가해야 할 일을했을 나의 쿼리와 동일한 내용 (resultstring $) 변수를 생성 한 후 다음과 같이 그것을 에코 :

    효과가있다!

  13. ==============================

    13.쿼리 검색 get_compiled_select ()를 사용하는 대신 교체

    쿼리 검색 get_compiled_select ()를 사용하는 대신 교체

  14. ==============================

    14.나는 여기에 모든 대답을 읽을 수 있지만 얻을 수 없다

    나는 여기에 모든 대답을 읽을 수 있지만 얻을 수 없다

    echo $this->db->get_compiled_select();
    

    일에, 그것은 나에게 오류를 같이했다

    난 \ SYSTEM \ 데이터베이스 \ DB_active_rec.php 파일에서 아래 라인으로부터 보호 제거하고 일했다 그래서

    protected function _compile_select($select_override = FALSE)
    
  15. from https://stackoverflow.com/questions/6142099/how-to-print-sql-statement-in-codeigniter-model by cc-by-sa and MIT license