MySQL 쿼리에 PHP 변수 포함
문제:
MySQL 문에 PHP 변수 포함 특히 VALUES 내에 값으로 삽입되면 오류가 발생할 수 있습니다. 절.
해결책 1: 준비된 문 사용
준비된 문은 쿼리에 PHP 변수를 포함하는 안전하고 효율적인 방법을 제공합니다. 방법은 다음과 같습니다.
mysqli 사용 예:
$type = 'testing'; $reporter = "John O'Hara"; $sql = "INSERT INTO contents (type, reporter, description) VALUES (?, ?, ?)"; $stmt = $mysqli->prepare($sql); $stmt->bind_param("sss", $type, $reporter, $description); $stmt->execute();
사용예시 PDO:
$type = 'testing'; $reporter = "John O'Hara"; $sql = "INSERT INTO contents (type, reporter, description) VALUES (?, ?, ?)"; $stmt = $pdo->prepare($sql); $stmt->execute([$type, $reporter, $description]);
해결책 2: 화이트리스트 필터링 사용
식별자를 나타내는 쿼리 부분(예: 테이블 또는 필드 이름)에는 흰색을 사용합니다. 목록 필터링을 통해 유효한지 확인합니다. 여기에는 다음이 포함됩니다.
Order By에 대한 화이트리스트 필터링의 예:
$orderby = $_GET['orderby'] ?: "name"; // Set default $allowed = ["name", "price", "qty"]; // White list if (!in_array($orderby, $allowed)) { throw new InvalidArgumentException("Invalid ORDER BY field name"); }
위 내용은 MySQL 쿼리에 PHP 변수를 어떻게 안전하게 포함시킬 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!