>백엔드 개발 >PHP 튜토리얼 >MySQL의 VALUES 절에서 PHP 변수를 사용할 때 오류가 발생하는 이유는 무엇입니까?

MySQL의 VALUES 절에서 PHP 변수를 사용할 때 오류가 발생하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-21 15:17:10461검색

Why Do PHP Variables Cause Errors When Used in MySQL's VALUES Clause?

MySQL 문에 PHP 변수를 포함하는 방법

문제:

PHP에서 VALUES 내에 포함된 MySQL 문으로 인해 문제가 발생했습니다. 문제.

질문:

VALUES 내에 변수를 포함하면 오류가 발생하는 이유는 무엇입니까?

답변:

MySQL 문에 PHP 변수를 포함하는 두 가지 접근 방식이 있습니다. 적절하게:

  1. Prepared 문 사용:

    SQL 데이터 리터럴(문자열, 숫자)을 나타내는 변수의 경우 준비된 문을 사용해야 합니다. 여기에는 다음이 포함됩니다.

    • SQL 문의 자리 표시자 정의
    • 쿼리 준비
    • 자리 표시자에 변수 바인딩
    • 쿼리 실행

    예시 (mysqli):

    $type = 'testing';
    $sql = "INSERT INTO contents (type, reporter, description) VALUES ('whatever', ?, ?)";
    $mysqli->execute_query($sql, [$type, $reporter, $description]);
  2. 화이트리스트 필터링 사용:

    쿼리 부분을 나타내는 다른 변수의 경우(예: 키워드 , 식별자), 허용된 값만 사용되도록 허용 목록을 통해 필터링해야 합니다. 예(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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.