2013-06-26 3 views
5

SQL query을 데이터베이스 테이블에 저장하므로 더 많은 레코드가 db에 입력 되더라도 관계없이 사용할 기준을 저장합니다.SQL 쿼리를 테이블에 저장하는 방법은 무엇입니까?

Query 문을 저장하는 데 사용할 올바른 데이터 유형 및 구문이 있습니까? 데이터 유형을 VARCHAR(1055)으로 설정 했으므로 충분합니다. 의 인용문을 정확하게 저장하고 단일 문자열로 유지하는 MySQL function이 있습니까?

업데이트 : 우리는 시스템의 사용자가 시스템의 다른 사용자를 기반으로 연락처 목록을 만들 수 있습니다, 그래서 그들은 선택하는 양식을 사용하여 쿼리를 생성 쿼리

를 저장하는 이유는 모든 사용자와 말 경영자의 직업 유형.

위의 쿼리는 데이터베이스에 저장되므로 임원 유형에 새 사용자가 추가 되더라도 통신을 보낼 때 연락처 정보가 포함됩니다.

이것이 최선의 방법이라고 생각합니다. 아이디어가 있습니까?

+0

어디에서 저장 하시겠습니까? 콘솔에서 직접? PHP에서? PhpMyAdmin에서? –

+0

SQL 쿼리 자체는 하나의 문자열이므로 'varchar'는 올바른 데이터 유형처럼 보입니다. 그래도 검색어를 저장하는 것은 매우 드문 일입니다. 나는 당신이 성취하고자하는 것이 무엇이든지 달성 할 수있는 더 좋은 방법이 있다고 상상합니다. 또한 응용 프로그램에 잠재적 인 SQL 주입 지점을 추가하는 것처럼 보이므로 확실하게 문이 제대로 소독되도록하고 싶을 것입니다. – David

+0

PHP에서 쿼리의 업데이트 된 이유 확인 – surfer190

답변

3

VARCHAR(1055)를 변환하는 PHP htmlentities()를 사용할 수 있습니다. TEXT, 임의의 길이의 텍스트 (다른 ​​데이터베이스에서는 CLOB라고도 함)에 대한 MySQL의 데이터 형식을 사용하십시오.

자세한 배경 정보 : 그럼에도 불구하고

, 당신은 아마 대신 데이터베이스에 일반 텍스트 SQL을 저장하는 응용 프로그램 레이어에 어떤 식 으로든 당신의 쿼리를 모델링해야한다고 생각 . 스키마를 변경하면 해당 SQL 문이 모두 잘못되었을 수 있습니다. 행운을 빌어 요!

사용자가 임의의 SQL을 입력 할 수 있다면 큰 보안 문제가 발생할 수 있다는 또 다른 단점이 있습니다. 당신이 CREATE VIEW를 실행할 수 있습니다 매개 변수를 전달할 필요가없는 경우에는 그 계약을 연장하지 않은 멋진 인턴

DROP DATABASE my_database. 
+0

글쎄, 직접 SQl 엔트리를 허용하지 않음으로써 그것을 막아 왔고 쿼리를 게시하지 않는다고 생각합니다. 세션 변수에 저장되어 있으며 시스템에 의해 생성됩니다. – surfer190

+0

@StephenH : 확실하게 알고 싶었습니다. –

1

쿼리를 저장할 올바른 데이터 형식이 없습니다.

하지만 HTML 코드를 사용하여 HTML 문자를 제거 할 수 있습니다.

또는 충분하지 않습니다 문자

0

나는 이것이 올바른 접근하지 믿습니다. 데이터베이스에 결과 쿼리를 저장하면 안되며 대신 생성 된 sql을 생성 한 매개 변수를 저장해야합니다. 구현시 해당 쿼리를 변경하려면 사용자에게 필터 양식을 표시하기 위해 매개 변수를 얻기 위해 저장된 SQL을 구문 분석해야합니다.그러나 매개 변수를 대신 사용하면 필요할 때 언제든지 쿼리를 다시 생성 할 수 있으며 현재 필터 형식을 쉽게 표시 할 수 있습니다.

당신이 SQL tho를 저장하길 원한다면, 앞에서 언급했듯이 TEXT가 올바른 필드 유형입니다. 필드 크기 제한에서 SQL 문자열을 잘자를 가능성이 훨씬 적기 때문입니다.

관련 문제