programing

SQL 열 이름이 올바른지 확인합니다.

powerit 2023. 10. 25. 23:49
반응형

SQL 열 이름이 올바른지 확인합니다.

문자열이 sql 문에 대해 유효한 호환 열 이름이라는 것을 php에서 어떻게 확인하시겠습니까?줄타기 시합일 뿐입니다.

궁극적으로 모든 문자열은 큰따옴표로 묶이면 유효한 열 이름입니다(MySQL은 구성에 따라 해당 규칙을 따르지 않을 수 있습니다)기본 설치에서 큰따옴표를 식별자 따옴표로 사용하지 않습니다.

그러나 여러 DBMS 태그에서 알 수 있듯이 교차 플랫폼이 되도록 하려면 최소 공통 분모를 확인해야 합니다.

포스트그레SQL 설명서에는 다음과 같은 좋은 정의가 있습니다.

SQL 식별자 및 핵심 단어는 문자(a-z)로 시작해야 하지만, 구분 기호가 있는 문자와 라틴어가 아닌 문자(_) 또는 밑줄(_)로 시작해야 합니다.식별자 또는 키워드의 후속 문자는 문자, 밑줄, 숫자(0-9) 또는 달러 기호($)일 수 있습니다.SQL 표준 문자에 따라 식별자에는 달러 기호가 허용되지 않으므로 달러 기호를 사용하면 응용 프로그램의 휴대성이 저하될 수 있습니다.

따라서 정규식을 사용하여 다음 사항을 확인해야 합니다.

  • 편지로 시작합니다.
  • 문자(letters)와 숫자 및 밑줄만 포함합니다.

따라서 다음과 같은 정규 표현식이 이를 다루어야 합니다.

^[a-zA-Z_][a-zA-Z0-9_]*$

SQL은 대소문자를 구분하지 않으므로(큰따옴표를 사용하지 않는 한) 대문자와 소문자를 사용할 수 있습니다.

다음과 같이 MySQL 쿼리를 사용하여 특정 테이블에서 필드를 가져올 수 있습니다.

SHOW FIELDS FROM tbl_name

간단한 PHP 몇 가지가 있습니다.

$string_to_check = 'sample';
$valid = false;
$q = mysql_query("SHOW FIELDS FROM tbl_name");
while($row = mysql_fetch_object($q)) {
  if($row->Field == $string_to_check) {
     $valid = true; break;
  }
}
if($valid) {
  echo "Field exists";
}

사용하다

열을 표시하거나 쿼리를 설명하여 결과에서 검증합니다.

같은 질문이 있었다면 특정 문자 목록에 대한 특정 데이터베이스 문서를 검색한 후 regexp 형식으로 구현했습니다.

하지만 기본적인 라틴 문자, 숫자, 밑줄은 제가 사용하는 어떤 분야의 이름을 짓기에 충분하기 때문에 저는 결코 그런 질문에 직면하지 않을 것입니다.그래서 저는 휴대성과 유지보수성이 뛰어납니다.

언급URL : https://stackoverflow.com/questions/4977898/check-for-valid-sql-column-name

반응형