PHP가 MySQL에 값을 전달하기를 바라면서 SQL 쿼리의 테이블과 열 스팟에 양식 값을 삽입하려고합니다.
이렇게 :
$sql= "SELECT * FROM '{$table}' WHERE '{$catagory}' = '{$value}'";
그렇다면 구문 오류없이 이와 같은 작업을 수행 할 수있는 방법이 있습니까?
우선, 쿼리의 데이터베이스, 테이블 또는 열을 결정하기 위해 양식의 원시 입력 데이터를 사용 해서는 안된다는 면책 조항을 작성하겠습니다 . 나쁜 소식입니다. 최종 사용자에게 데이터베이스 스키마를 노출하지 않고 값을 원하는 값으로 만 제한하고 브라우저의 개발자 도구 나 사이트를 해킹하려는 봇으로 변경할 수없는 일종의 매핑을 만듭니다.
mysql 로이 를 수행하려면 mysqli_real_escape_string 으로 양식 데이터를 이스케이프하여 SQL 삽입 을 방지해야 합니다. 나는 sprintf를 사용하여 더 깨끗하게 만들지 만 필수는 아닙니다.
$sql = sprintf(
"SELECT * FROM `%s` WHERE `%s` ='%s'",
mysqli_real_escape_string($table),
mysqli_real_escape_string($column),
mysqli_real_escape_string($value)
);
테이블 및 열 이름 주변의 백틱 (`)에 유의하십시오. 작은 따옴표 ( ')라고도하는 아포스트로피가 없습니다. MySQL 쿼리에서 데이터베이스, 테이블 및 열을 캡슐화하는 적절한 방법입니다. 이름의 특수 문자 문제를 방지하는 데 도움이됩니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다