MySQL 데이터베이스를 사용할 때는 종종 쿼리 결과에서 데이터 열에서 데이터를 추출해야합니다. MySQLI 확장자는 쿼리 결과를 가로 지르는 여러 가지 방법을 제공합니다. mysqli_result :: fetch_column은 특정 열에서 모든 데이터를 효율적으로 추출하는 데 도움이되는 매우 편리한 기능 중 하나입니다. 이 기사에서는 Fetch_column을 올바르게 사용하여 여러 행과 열에서 데이터를 가져오고 코드를 최적화하기위한 모범 사례를 제공하는 방법을 살펴 보겠습니다.
mysqli_result :: fetch_column은 쿼리 결과에서 특정 열에 대한 데이터를 가져 오는 mysqli_result 클래스의 메소드입니다. fetch_assoc 또는 fetch_row 와 같은 메소드와 달리 Fetch_column은 단일 열에 대한 데이터 만 반환하며 행으로 행으로 한 번에 한 번에 모든 행을 가져옵니다.
<span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli_fetch_column</span></span><span>(mysqli_result </span><span><span class="hljs-variable">$result</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$column</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>): </span><span><span class="hljs-keyword">array</span></span><span>|</span><span><span class="hljs-literal">false</span></span><span>;
</span></span>
$ 결과 : mysqli_query () 또는 기타 유사한 함수에 의해 반환 된 결과 세트 객체.
$ 열 : 검색 할 열의 인덱스를 지정하고 기본값은 0 , 즉 첫 번째 열입니다.
이 메소드는 지정된 열에서 데이터가 포함 된 배열을 리턴하고 데이터가 없거나 오류가 발생하면 False를 반환합니다.
Fields ID , 이름 및 이메일이 있는 사용자 라는 테이블이 있다고 가정 해 봅시다. 모든 사용자의 이름 필드를 추출하려고합니다.
<span><span><span class="hljs-comment">// 데이터베이스 연결</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"user"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"database"</span></span><span>);
</span><span><span class="hljs-comment">// 연결이 성공했는지 확인하십시오</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"연결이 실패했습니다: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error);
}
</span><span><span class="hljs-comment">// 쿼리를 실행하십시오</span></span><span>
</span><span><span class="hljs-variable">$query</span></span><span> = </span><span><span class="hljs-string">"SELECT name FROM users"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-variable">$query</span></span><span>);
</span><span><span class="hljs-comment">// 사용 fetch_column 모든 것을 얻으십시오 name 현장 데이터</span></span><span>
</span><span><span class="hljs-variable">$names</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>-></span><span><span class="hljs-title function_ invoke__">fetch_column</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>);
</span><span><span class="hljs-comment">// 출력 결과</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$names</span></span><span>) {
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$names</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$name</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$name</span></span><span> . </span><span><span class="hljs-string">"<br>"</span></span><span>;
}
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"데이터가 없습니다。"</span></span><span>;
}
</span><span><span class="hljs-comment">// 연결을 닫으십시오</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span></span>
위의 코드에서 Fetch_Column (0)은 쿼리 결과에서 이름 열의 모든 데이터를 가져 와서 배열로 반환합니다. 그런 다음 Foreach를 통과하고 각 이름을 출력합니다.
후속 처리를위한 데이터 열만 필요하면 (예 : 선택 상자 생성 또는 동적으로 채워진 데이터) Fetch_Column은 매우 효율적인 선택입니다. fetch_assoc 또는 fetch_row를 사용할 때 불필요한 열 데이터를 처리 할 필요가 없습니다.
다량의 데이터를 처리 할 때 Fetch_Column은 전체 행의 데이터가 아니라 필요한 열 데이터 만 가져 오기 때문에 다른 방법에 비해 메모리 소비를 크게 줄일 수 있습니다. 고성능 요구 사항이있는 시나리오의 경우이 방법은 쿼리 성능을 효과적으로 최적화 할 수 있습니다.
fetch_column은 편리하고 빠르지 만 실제 개발에서는 원시 SQL 쿼리를 사용하면 SQL 주입의 위험이있을 수 있습니다. 따라서 모범 사례는 항상 준비된 진술을 사용하여 보안을 보장하는 것입니다.
<span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"SELECT name FROM users WHERE age > ?"</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"i"</span></span><span>, </span><span><span class="hljs-variable">$age</span></span><span>);
</span><span><span class="hljs-variable">$age</span></span><span> = </span><span><span class="hljs-number">18</span></span><span>;
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">get_result</span></span><span>();
</span><span><span class="hljs-variable">$names</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>-></span><span><span class="hljs-title function_ invoke__">fetch_column</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>);
</span><span><span class="hljs-comment">// 출력 결과</span></span><span>
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$names</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$name</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$name</span></span><span> . </span><span><span class="hljs-string">"<br>"</span></span><span>;
}
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span></span>
데이터베이스 작업에서 오류 처리가 중요합니다. 쿼리가 성공했는지 확인하고 가능한 오류를 처리하십시오. mysqli_error () 및 mysqli_errno ()는 문제 해결에 대한 특정 오류 정보를 얻는 데 도움이 될 수 있습니다.
<span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$result</span></span><span>) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"쿼리가 실패했습니다: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->error);
}
</span></span>
쿼리 결과를 처리 한 후 MySQLI_FREE_RESULT ()를 호출하거나 데이터베이스 연결을 닫아 리소스를 확보하십시오. 이러한 리소스는 스크립트 끝에서 자동으로 릴리스되지만 자원을 명시 적으로 공개하는 것이 더 나은 관행입니다.
<span><span><span class="hljs-variable">$result</span></span><span>-></span><span><span class="hljs-title function_ invoke__">free</span></span><span>();
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span></span>
MySQLI_RESULT :: FETCH_COLUMN을 사용하여 여러 행과 열에서 데이터를 얻는 것은 코드를 크게 단순화하고 성능을 향상시키는 간단하고 효율적인 방법입니다. 열 인덱스를 지정하면 불필요한 루프 트래버스를 피하면서 모든 데이터를 직접 가져올 수 있습니다. 또한 준비된 명령문 및 오류 처리 메커니즘을 사용하면 프로그램의 보안 및 견고성을 향상시킬 수 있습니다.
이 기사를 도입함으로써 Fetch_Column을 더 잘 이해하고 사용하고 개발 효율성과 코드 품질을 향상시키는 데 도움이되기를 바랍니다.
관련 태그:
mysqli_result