콘텐츠 테이블에 값을 삽입하려고 합니다. VALUES에 PHP 변수가 없으면 제대로 작동합니다. 그런데 변수 $type放在VALUES를 넣으면 작동하지 않습니다. 내가 뭘 잘못했나요?
$type
VALUES
SQL 삽입을 방지하기 위해 삽입 문은 다음과 같습니다.
MySQL 문에 PHP 변수를 추가하는 규칙은 간단하고 간단합니다.
이 규칙은 99%의 검색어에 적용되며 귀하의 검색어에도 적용됩니다. SQL 데이터 리터럴(또는 간단히 SQL 문자열이나 숫자)을 나타내는 모든 변수는 준비된 문을 통해 추가되어야 합니다. 예외없이.
이 방법은 네 가지 기본 단계로 구성됩니다.
모든 인기 있는 PHP 데이터베이스 드라이버에서 이를 달성하는 방법은 다음과 같습니다.
mysqli
현재 PHP 버전에서는 단일 호출로 준비/바인딩/실행이 가능합니다.
이전 버전의 PHP를 사용하는 경우 명시적으로 준비/바인딩/실행을 수행해야 합니다.
이 코드는 약간 복잡하지만 이러한 모든 연산자에 대한 자세한 설명은 내 기사 Mysqli를 사용하여 INSERT 쿼리를 실행하는 방법과 프로세스를 많이 단순화할 수 있는 솔루션에서 찾을 수 있습니다.
SELECT 쿼리의 경우 위와 동일한 방법을 사용할 수 있습니다.
그러나 이전 버전의 PHP를 사용하는 경우 준비/바인딩/실행 루틴을 수행해야 하며 일반적인 방법으로 데이터를 추출할 수 있는 get_result()方法,以便从中获取一个熟悉的mysqli_result를 호출해야 합니다.
get_result()
mysqli_result
PDO에서는 바인딩 부분과 실행 부분을 함께 병합할 수 있어 매우 편리합니다. PDO는 또한 일부 사람들이 매우 편리하다고 생각하는 명명된 자리 표시자를 지원합니다.
SQL 키워드, 테이블이나 필드 이름, 연산자 등 기타 쿼리 부분은 화이트리스트를 통해 필터링해야 합니다.
때로는 키워드나 식별자(데이터베이스, 테이블 또는 필드 이름)와 같이 쿼리의 다른 부분을 나타내는 변수를 추가해야 합니다. 이는 드문 상황이지만 준비하는 것이 가장 좋습니다.
이 경우 스크립트에 명시적으로 작성된 값 목록과 비교하여 변수를 확인해야 합니다. 이에 대한 자세한 내용은 내 다른 기사 사용자 선택에 따라 ORDER BY 절에 필드 이름 추가:
으아아아 으아아아
변수가 허용된 변형 중 하나와 같거나 오류가 발생하므로 안전하게 SQL 쿼리에 넣을 수 있습니다. $direction和$orderby
$direction
$orderby
문자로 묶여야 합니다. 따라서 ORDER BY 예제의 최종 쿼리 문자열은 다음과 같아야 합니다. backtick 으아아아
backtick
SQL 삽입을 방지하기 위해 삽입 문은 다음과 같습니다.
으아아아MySQL 문에 PHP 변수를 추가하는 규칙은 간단하고 간단합니다.
1. 준비된 진술을 사용하세요
이 규칙은 99%의 검색어에 적용되며 귀하의 검색어에도 적용됩니다. SQL 데이터 리터럴(또는 간단히 SQL 문자열이나 숫자)을 나타내는 모든 변수는 준비된 문을 통해 추가되어야 합니다. 예외없이.
이 방법은 네 가지 기본 단계로 구성됩니다.
모든 인기 있는 PHP 데이터베이스 드라이버에서 이를 달성하는 방법은 다음과 같습니다.
데이터 리터럴을 추가하려면
mysqli
를 사용하세요현재 PHP 버전에서는 단일 호출로 준비/바인딩/실행이 가능합니다.
으아아아이전 버전의 PHP를 사용하는 경우 명시적으로 준비/바인딩/실행을 수행해야 합니다.
으아아아이 코드는 약간 복잡하지만 이러한 모든 연산자에 대한 자세한 설명은 내 기사 Mysqli를 사용하여 INSERT 쿼리를 실행하는 방법과 프로세스를 많이 단순화할 수 있는 솔루션에서 찾을 수 있습니다.
SELECT 쿼리의 경우 위와 동일한 방법을 사용할 수 있습니다.
으아아아그러나 이전 버전의 PHP를 사용하는 경우 준비/바인딩/실행 루틴을 수행해야 하며 일반적인 방법으로 데이터를 추출할 수 있는
으아아아get_result()
方法,以便从中获取一个熟悉的mysqli_result
를 호출해야 합니다.PDO를 사용하여 데이터 리터럴 추가
으아아아PDO에서는 바인딩 부분과 실행 부분을 함께 병합할 수 있어 매우 편리합니다. PDO는 또한 일부 사람들이 매우 편리하다고 생각하는 명명된 자리 표시자를 지원합니다.
2. 화이트리스트 필터링을 사용하세요
SQL 키워드, 테이블이나 필드 이름, 연산자 등 기타 쿼리 부분은 화이트리스트를 통해 필터링해야 합니다.
때로는 키워드나 식별자(데이터베이스, 테이블 또는 필드 이름)와 같이 쿼리의 다른 부분을 나타내는 변수를 추가해야 합니다. 이는 드문 상황이지만 준비하는 것이 가장 좋습니다.
이 경우 스크립트에 명시적으로 작성된 값 목록과 비교하여 변수를 확인해야 합니다. 이에 대한 자세한 내용은 내 다른 기사 사용자 선택에 따라 ORDER BY 절에 필드 이름 추가:
예는 다음과 같습니다.으아아아 으아아아
이와 같은 코드를 작성한 후에는변수가 허용된 변형 중 하나와 같거나 오류가 발생하므로 안전하게 SQL 쿼리에 넣을 수 있습니다.
마지막으로 언급할 점은 식별자의 형식도 특정 데이터베이스 구문에 따라 지정되어야 한다는 것입니다. MySQL의 경우 식별자는$direction
和$orderby
문자로 묶여야 합니다. 따라서 ORDER BY 예제의 최종 쿼리 문자열은 다음과 같아야 합니다.
backtick
으아아아