2012-08-28 4 views
1

내가 테이블에 하나의 튜플을 삽입 할 때 문자열을 탈출하는 데 사용하고 있지만이 같은이 하나 삽입의 경우에 문자열을 이스케이프에 대해 아무것도 찾을 수 없습니다 :이 경우 삽입 값을 이스케이프 처리해야합니까?

INSERT INTO TABLE1 SELECT * FROM TABLE2 WHERE ... 

... 내가 알고 TABLE1과 TABLE2는 동일한 열을 가져야합니다. 그러나 나는 도주에 대해 확신하지 못합니다. 아무도 MySQL이 삽입의 경우 어떻게 작동하는지 알려줄 수 있습니까? 필요하다면 어떻게 문자열을 이스케이프해야합니까?

미리 감사드립니다.

+0

어떤 방식 으로든 변경할 필요가 없습니다. 테이블이 동일하면 – hjpotter92

+0

이스케이프에 관한 질문이 "WHERE"절과 관련된다고 가정하는 것이 합리적입니까? –

답변

4

표시된 경우에는 데이터베이스 내에서 작업 할 때 아무 것도 이스케이프 처리 할 필요가 없습니다. 분명히 데이터가 table2에 채워질 때 이스케이프 처리되어야했습니다.

+0

감사합니다. 사실 나는 동일한 DB 내에서 작업하지 않습니다. TABLE1은 TABLE2의 다른 DB에 있습니다. 하지만 네가 의미하는 바를 이해했다. ;) – Andrade

1

아무 것도 벗어나지 마십시오. 준비된 문장을 지원하는 솔루션 (예 : PDO 또는 mysqli)을 사용하십시오. 영업 이익은 PHP에 대해 이야기하지 않은, 내가 그 지원하는 API를 사용하면, 반드시 사용하든 그 말을 내 대답을 일반화 할 수있는 가능성이 있음을 수락

편집

준비된 진술. .NET 스택이나 Ruby 또는 Python을 사용하거나 거의 모든 것이 사용된다면이를 지원하는 기본 API를 사용할 수 있습니다.

+0

이것은 PDO 또는 mysqli와 관련이 있습니다. 이것들은 심지어 질문에서 언급되지도 않았고, PHP도 아니었다. –

+1

사람이 이스케이프와 MySQL에 관해 묻는다면 PHP와 거의 항상 관련이 있습니다. 그리고 PHP를 방정식에서 벗어나고 싶다면 이스케이프에 대해 묻기 때문에 PHP가 데이터베이스와의 직접적인 상호 작용에 대해 말하지 않고 있다는 가정은 여전히 ​​유효합니다. 나의 결론은 여전히 ​​유효합니다. 준비된 문장을 지원하는 API를 사용하십시오. –

+0

PHP 기반의 프레임 워크를 사용하고 있습니다. – Andrade

1

INSERT INTO TABLE1 SELECT * FROM TABLE2은 그대로입니다. WHERE ... 부분에 사용자 입력이있는 경우 익숙한 것과 같은 방식으로이 부분을 벗어나야합니다.

관련 문제