문제:
PHP에서 VALUES 내에 포함된 MySQL 문으로 인해 문제가 발생했습니다. 문제.
질문:
VALUES 내에 변수를 포함하면 오류가 발생하는 이유는 무엇입니까?
답변:
MySQL 문에 PHP 변수를 포함하는 두 가지 접근 방식이 있습니다. 적절하게:
Prepared 문 사용:
SQL 데이터 리터럴(문자열, 숫자)을 나타내는 변수의 경우 준비된 문을 사용해야 합니다. 여기에는 다음이 포함됩니다.
예시 (mysqli):
$type = 'testing'; $sql = "INSERT INTO contents (type, reporter, description) VALUES ('whatever', ?, ?)"; $mysqli->execute_query($sql, [$type, $reporter, $description]);
화이트리스트 필터링 사용:
쿼리 부분을 나타내는 다른 변수의 경우(예: 키워드 , 식별자), 허용된 값만 사용되도록 허용 목록을 통해 필터링해야 합니다. 예(orderby 확인):
$orderby = $_GET['orderby'] ?: 'name'; $allowed = ['name', 'price', 'qty']; $key = array_search($orderby, $allowed); if ($key === false) throw new InvalidArgumentException("Invalid field name");
결론:
이러한 원칙을 준수하면 SQL 삽입 및 PHP 변수가 포함될 때 쿼리의 올바른 실행을 보장합니다. 준비된 문은 데이터 리터럴에 사용해야 하며, 화이트리스트는 허용된 값만 쿼리의 다른 부분에 삽입되도록 보장합니다.
위 내용은 MySQL의 VALUES 절에서 PHP 변수를 사용할 때 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!