2012-12-13 2 views
0

PHP5를 사용하여 MySQL 쿼리를 실행하는 MySQLi 클래스와 함께 MySQLi :: query를 사용하여 처리 된 각 쿼리를 현재 연결된 데이터베이스의 새 테이블에 어떻게 기록 할 수 있습니까?새 테이블에 MySQLi 쿼리를 기록하는 방법

Java에서와 같이 함수에서 일부 확장을 수행 할 수 있습니까?

+2

클래스를 자신의'-> myquery()'로 확장하면 로깅은 실제'-> query()'로 전달됩니다. –

+1

PHP 클래스를 확장 한 경험이 없지만 -> query()를 확장하는 것이 더 편리합니다. –

+1

왜 원한다면 MySQL 서버에서 일반 쿼리 로그를 활성화하지 않는 것이 좋을까요? – Wrikken

답변

1

트리거를 지원하는 버전의 mysql을 사용하는 경우. 그냥 당신이

http://dev.mysql.com/doc/refman/5.0/en/triggers.html

트리거에 대한 지원은 MySQL을 5.0.2로 시작 포함되어 불필요한 비즈니스 로직 코드를 오염 할 필요가 없습니다 이런 식으로 트리거를 만들 수 있습니다. 따라서 앱을 배포 할 때 테이블을 만드는 동시에 트리거를 생성하십시오.

0

당신의 로그

create table querylog (
tm timestamp, 
query varchar(4096)); 

및 쿼리를 수행 할 때,

insert into querylog (tm, query) 
values(now(), '$query_string') 

당신은 명시 적으로 모든 쿼리에 또는에서이 작업을 수행 할 수있는이 테이블의 쿼리 문자열을 로그 테이블을 정의 함수 my_query의 경우 mysqli_query 대신 @e_p가 정의 된 트리거를 정의하고 호출하십시오.

관련 문제