MySQL 문에 PHP 변수를 포함하는 방법
P粉738248522
2023-08-23 21:12:18
<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>
SQL 삽입을 방지하려면 be를 사용하여 명령문을 삽입하세요
으아아아MySQL 문에 PHP 변수를 추가하는 규칙은 간단하고 간단합니다.
1. 준비된 진술을 사용하세요
이 규칙은 쿼리의 99%, 특히 귀하의 쿼리에 적용됩니다. SQL 데이터 리터럴(또는 간단히 SQL 문자열이나 숫자)을 나타내는 모든 변수는 준비된 문을 통해 추가되어야 합니다. 예외는 없습니다.
이 방법에는 네 가지 기본 단계가 포함됩니다
모든 인기 있는 PHP 데이터베이스 드라이버를 사용하여 이를 수행하는 방법은 다음과 같습니다.
mysqli
현재 PHP 버전에서는 단일 호출로 준비/바인딩/실행이 가능합니다.
으아악이전 버전의 PHP를 사용하는 경우 준비/바인딩/실행을 명시적으로 수행해야 합니다.
으아악코드는 약간 복잡하지만 이러한 모든 연산자에 대한 자세한 설명은 프로세스를 크게 단순화하는 솔루션과 함께 내 기사 Mysqli를 사용하여 INSERT 쿼리를 실행하는 방법에서 찾을 수 있습니다.
SELECT 쿼리의 경우 위와 동일한 방법을 사용할 수 있습니다.
으아악그러나 이전 버전의 PHP를 사용하는 경우 준비/바인딩/실행 루틴을 수행하고 쌍을 추가해야 합니다.
으아악get_result()
方法的调用,以获得熟悉的mysqli_result 일반적인 방법으로 데이터를 가져올 수 있습니다.PDO를 사용하여 데이터 텍스트 추가
으아악PDO에서는 바인딩과 실행 부분을 결합할 수 있어 매우 편리합니다. PDO는 또한 일부 사람들이 매우 편리하다고 생각하는 명명된 자리 표시자를 지원합니다.
2. 화이트리스트 필터링을 사용하세요
SQL 키워드, 테이블이나 필드 이름, 연산자 등 기타 쿼리 부분은 whitelist를 통해 필터링해야 합니다.
때로는 키워드나 식별자(데이터베이스, 테이블 또는 필드 이름)와 같이 쿼리의 다른 부분을 나타내는 변수를 추가해야 합니다. 이런 상황은 드물지만 대비하는 것이 가장 좋습니다.
이 경우 스크립트에 명시적으로 작성된 값 목록과 비교하여 변수를 확인해야 합니다. 이에 대한 설명은 내 다른 기사 사용자 선택에 따라 ORDER BY 절에 필드 이름 추가하기:
예는 다음과 같습니다.으아악 으아악
이와 같은 코드를 작성한 후에는변수가 허용되는 변형 중 하나와 같거나 오류가 발생하므로 SQL 쿼리에 넣어도 안전합니다.
식별자에 대해 마지막으로 언급할 사항은 특정 데이터베이스 구문에 따라 형식이 지정되어야 한다는 것입니다. MySQL의 경우 식별자 주위에$direction
和$orderby
문자가 있어야 합니다. 따라서 주문 예시의 최종 쿼리 문자열은
反引号
이 됩니다. 으아악