MySQL 쿼리에서 테이블 이름 주위에 백틱을 사용해야 했던 이유는 무엇입니까?

StackOverflow https://stackoverflow.com//questions/12658763

  •  11-12-2019
  •  | 
  •  

문제

내가 읽은 한, 예를 들어 쿼리의 테이블 이름에는 백틱이 필요하지 않습니다.("테이블 이름에 삽입....").또한 제가 아는 한 밑줄은 이름에 사용하기에 완벽하게 허용되는 구문입니다.foo_bar.그렇다면 내 질문은 이 쿼리가 왜 실패했는지입니다.

mysql_query("INSERT INTO quick_links WHERE ...etc");

이 쿼리가 완벽하게 작동했을 때:

mysql_query("INSERT INTO `quick_links` WHERE ...etc");

"quick" 또는 "links" 예약어인가요???나는 그렇게 생각하지 않았지만 다시 한번 MySQL을 처음 접했기 때문에 사과드립니다.또한 특정 "스토리지 엔진"(용어는 phpMyAdmin 참조)에서 백틱을 사용해야 합니까?차이점이 있다면 "InnoDB"를 사용하고 있습니다.

답변해 주셔서 감사합니다. 저는 MySQL을 처음 접했고 이와 같은 미묘한 차이를 확실히 이해하고 싶습니다.

내 전체 쿼리는 다음과 같습니다.

mysql_query("INSERT INTO `quick_links` VALUES (
    '$user_id', '$ql_name', '$ql_url', '$ql_img'
)"); 

$ql_url 및 $ql_name은 $_POST를 통해 얻은 다음 쿼리에 사용되기 전에 Trim 및 mysql_real_escape_string으로 정리되었습니다.$ql_img는 단순히 썸네일이 업로드되는 디렉토리를 참조하는 URL이고, $user_id는 로그인한 특정 사용자를 식별하기 위한 것입니다.table_name 주위의 백틱을 제외하면 두 쿼리 모두 문자 그대로 정확히 동일했습니다.

도움이 되었습니까?

해결책

백틱은 이스케이프에만 사용됩니다. MySQL 예약어.다음 중 하나도 사용하지 않은 경우 선택 사항입니다. 예약된 키워드 사용된 tableNames 또는 columnNames가 다음과 같은 경우에만 제공됩니다. no spaces 그 위에.

이것 페이지 스키마에 사용할 수 있는 문자를 알려줍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top