>  Q&A  >  본문

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

<p>목차에 값을 삽입하려고 합니다. VALUES에 PHP 변수가 없으면 제대로 작동합니다. <code>$type</code> 변수를 <code>VALUES</code> 내가 뭘 잘못했나요? </p> <pre class="brush:php;toolbar:false;">$type = '테스트 중'; mysql_query("INSERT INTO 내용(유형, 보고자, 설명) VALUES($type, 'john', '무엇이든')");</pre> <p><br /></p>
P粉738248522P粉738248522395일 전533

모든 응답(2)나는 대답할 것이다

  • P粉949848849

    P粉9498488492023-08-24 16:07:56

    SQL 삽입을 방지하려면 be를 사용하여 명령문을 삽입하세요

    으아아아

    회신하다
    0
  • P粉883223328

    P粉8832233282023-08-24 15:43:16

    MySQL 문에 PHP 변수를 추가하는 규칙은 간단하고 간단합니다.

    1. 준비된 진술을 사용하세요

    이 규칙은 쿼리의 99%, 특히 귀하의 쿼리에 적용됩니다. SQL 데이터 리터럴(또는 간단히 SQL 문자열이나 숫자)을 나타내는 모든 변수는 준비된 문을 통해 추가되어야 합니다. 예외는 없습니다.

    이 방법에는 네 가지 기본 단계가 포함됩니다

    • SQL 문에서 모든 변수를 자리 표시자
    • 로 바꿉니다.
    • 준비결과조회
    • 변수 를 자리 표시자에 바인딩
    • 실행 쿼리

    모든 인기 있는 PHP 데이터베이스 드라이버를 사용하여 이를 수행하는 방법은 다음과 같습니다.

    mysqli
    를 사용하여 데이터 텍스트 추가

    현재 PHP 버전에서는 단일 호출로 준비/바인딩/실행이 가능합니다.

    으아악

    이전 버전의 PHP를 사용하는 경우 준비/바인딩/실행을 명시적으로 수행해야 합니다.

    으아악

    코드는 약간 복잡하지만 이러한 모든 연산자에 대한 자세한 설명은 프로세스를 크게 단순화하는 솔루션과 함께 내 기사 Mysqli를 사용하여 INSERT 쿼리를 실행하는 방법에서 찾을 수 있습니다.

    SELECT 쿼리의 경우 위와 동일한 방법을 사용할 수 있습니다.

    으아악

    그러나 이전 버전의 PHP를 사용하는 경우 준비/바인딩/실행 루틴을 수행하고 쌍을 추가해야 합니다. get_result() 方法的调用,以获得熟悉的< code>mysqli_result 일반적인 방법으로 데이터를 가져올 수 있습니다.

    으아악
    PDO를 사용하여 데이터 텍스트 추가
    으아악

    PDO에서는 바인딩과 실행 부분을 결합할 수 있어 매우 편리합니다. PDO는 또한 일부 사람들이 매우 편리하다고 생각하는 명명된 자리 표시자를 지원합니다.

    2. 화이트리스트 필터링을 사용하세요

    SQL 키워드, 테이블이나 필드 이름, 연산자 등 기타 쿼리 부분은 whitelist를 통해 필터링해야 합니다.

    때로는 키워드나 식별자(데이터베이스, 테이블 또는 필드 이름)와 같이 쿼리의 다른 부분을 나타내는 변수를 추가해야 합니다. 이런 상황은 드물지만 대비하는 것이 가장 좋습니다.

    이 경우 스크립트에 명시적으로 작성된 값 목록과 비교하여 변수를 확인해야 합니다. 이에 대한 설명은 내 다른 기사 사용자 선택에 따라 ORDER BY 절에 필드 이름 추가하기:

    예는 다음과 같습니다.

    으아악 으아악

    이와 같은 코드를 작성한 후에는

    변수가 허용되는 변형 중 하나와 같거나 오류가 발생하므로 SQL 쿼리에 넣어도 안전합니다. $direction$orderby

    식별자에 대해 마지막으로 언급할 사항은 특정 데이터베이스 구문에 따라 형식이 지정되어야 한다는 것입니다. MySQL의 경우 식별자 주위에

    문자가 있어야 합니다. 따라서 주문 예시의 최종 쿼리 문자열은 反引号이 됩니다. 으아악

    회신하다
    0
  • 취소회신하다