2014-06-12 3 views
1

PHP를 사용하여 MySQL의 동일한 칼럼 필드와 키워드로 프로젝트를 이미 표시했습니다. 오늘 PhpMyAdmin을 사용하여 데이터베이스를 다시 관리 할 때 아래와 같은 경고 메시지가 나타납니다.MySQL의 동일한 키워드를 테이블 열로 사용하면 어떤 위험이 있습니까?

The column name 'order' is a MySQL reserved keyword. 

내 프로젝트는 여전히 열 이름과 키워드 order와 함께 일하고있다.

제 질문은 what are the risks or ... when we're using the same keyword of MySQL as table column입니까?

+2

열 이름에'backticks'를 사용하지 마십시오. – user1978142

+2

SQL 쿼리에서 사용할 때 백틱으로 감싸는 것을 잊어 버리고 사용자 브라우저에 SQL 오류가 표시 될 위험이 있습니다 –

답변

0

쿼리에서 질서를 중심으로 백틱 (`)을 사용하십시오.

예 :

SELECT * 
FROM TableName 
WHERE `order`='someval' 

(!) 참고 :

다시 진드기, 테이블 및 칼럼 식별자에 사용할 수 있지만, 상기 식별자는 MySQL이 키워드를 예약 한 경우에만 필요하거나 식별자에는 공백 문자 나 제한된 집합 이상의 문자가 포함되어 있으므로 가능한 경우 예약 된 키워드를 열 또는 표 식별자로 사용하는 것을 피하면서 인용 문제를 피할 것을 권장합니다.

뒤로 틱은 다음과 같은 상황에 필요한 :

SELECT id, `my name`, `another field` , `field,with,comma` 
3

위험? 위험을 경험했습니다. 쿼리가 실행되지 않아 수정해야합니다.

대부분의 키워드는 유효한 검색어를 생성하는 식별자 과 혼동 될 가능성이 거의 없습니다. 물론, 당신은 몇 가지 비밀스러운 예를 생각해 낼 수 있습니다.

해결 방법은 식별자를 이스케이프 처리하는 것입니다. MySQL은 이스케이프를 위해 백틱을 사용합니다. 다른 데이터베이스는 큰 따옴표 또는 대괄호를 사용합니다. 그러므로, 또 다른 위험이 있습니다. 더 많이 사용하면 코드가 덜 휴대 될 수 있습니다.

중요한 이유는 쓰기 가능 및 가독성입니다. 나의 작은 새끼 고양이가 그것을 멀리 도달해야하는 곳에, backtick 열쇠는, 나의 키보드에, 좌 좌에 방법 떨어져있다. 그 결과 코드를 읽는 것이 주위에 떠오르는 수많은 수수께끼 인 캐릭터가 더 복잡하다는 것을 알게되었습니다. 명확성을 위해 식별자를 이스케이프하지 마십시오. 예약어를 피하고 글자, 숫자 및 밑줄 만 사용하면 충분합니다.

다른 위험이 있습니다. . . 작은 따옴표와 백틱을 혼동 할 것입니다. 그런 다음 쿼리에 열 값이 있다고 생각되는 상수가있을 수 있습니다. 이 혼란은이 커뮤니티에서 가장 일반적인 MySQL 문제 중 하나입니다.

관련 문제