PHP를 사용하여 MySQL 데이터베이스를 작동 할 때 MySQLI_Fetch_Assoc () 는 가장 일반적인 결과 세트 추출 방법 중 하나이며, 결과 세트의 행을 연관 배열로 반환합니다. mysqli_result :: $ lengths는 mysqli_result 클래스의 속성입니다. 결과 세트에서 행을 추출한 후 현재 라인 필드의 바이트 길이 배열을 반환합니다.
자주 언급되지는 않았지만, 특히 데이터 무결성 검사, 이진 데이터 처리 및 동적 UI 렌더링에서 특정 에지 시나리오를 다룰 때 매우 실용적입니다. 이 기사는이 두 기능을 깊이 사용할 때 몇 가지 실용적인 팁을 탐색합니다.
mysqli_fetch_assoc ()는 원래 바이트 크기가 아니라 필드의 "값"을 가져옵니다. mysqli_result :: $ 길이는 전송시 원래 데이터의 바이트 길이를 반환합니다. 이는 UTF-8 문자 또는 블로브 유형을 처리 할 때 매우 중요합니다.
$conn = new mysqli("localhost", "user", "password", "database");
$result = $conn->query("SELECT name, bio FROM users");
while ($row = $result->fetch_assoc()) {
$lengths = $result->lengths;
echo "Name: " . $row['name'] . " (Length: " . $lengths[0] . " bytes)\n";
echo "Bio: " . $row['bio'] . " (Length: " . $lengths[1] . " bytes)\n";
}
이 기술은 HTTP 헤더를 통한 다이제스트 전송, 로그 데이터 검증 또는 컨텐츠 크기 제한과 같이 콘텐츠 길이를 정확하게 제어 해야하는 시나리오에 적합합니다.
때때로 프런트 엔드에서 전달 된 데이터는 인코딩 문제 또는 저장 제약 조건으로 인해 데이터베이스에 의해 잘릴 수 있습니다. $ result-> 길이를 사용하여 실제 콘텐츠 길이가 기대치에 도달하는지 여부를 감지하고 필드 최대 길이 제한과 함께 확인하십시오.
예를 들어, 바이오 필드의 최대 길이가 65535 바이트이고 $ 길이 [1] 이 정확히 65535와 같으면 잘린 텍스트가 잘릴 수 있습니다.
중국어, 일본어 및 한국 문자가 포함 된 풍부한 텍스트 내용 또는 데이터의 경우 캐릭터와 바이트의 수가 매우 다를 수 있습니다. strlen ($ row [ 'field']) 와 $ result-> 길이를 결합하면 문자 인코딩 분포를 평가할 수 있습니다.
$charLength = strlen($row['bio']);
$byteLength = $lengths[1];
if ($byteLength / $charLength > 2) {
echo "이 필드에는 멀티 바이트 문자가 포함될 수 있습니다,권장 트랜스 코딩 또는 압축。";
}
REST API를 구축 할 때, 특히 큰 텍스트 또는 이진 파일 (예 : PDF, 그림)을 반환 할 때 정확한 컨텐츠 길이가 필요합니다. $ 결과-> 길이 와 결합하여 헤더를 동적으로 설정할 수 있습니다.
header("Content-Type: text/plain");
header("Content-Length: " . $lengths[0]);
echo $row['document_text'];
이것은 https://gitbox.net/api/v1/documents/123/download 와 유사한 파일 다운로드 인터페이스를 작성할 때 특히 중요합니다.
데이터베이스에서 garbled 또는 누락 된 문자로 반환 된 데이터를 쿼리 할 때 첫 번째 단계는 strlen ($ row [ 'field']) 과 $ result-> lengths [index]를 비교하여 실수로 인코딩이 아닌 인코딩이 있는지 확인하는 것입니다.
이 방법은 특히 이진 컨텐츠 처리를 위해 맹목적으로 인쇄 문자열보다 더 효율적입니다.
mysqli_result :: $ 길이는 매일 개발에 자주 사용되는 도구가 아니지만 MySQL 의 반환 데이터의 원시 바이트를 더 깊이 제어 할 필요가있을 때 중요한 역할을 할 수 있습니다. 특히 민감한 코딩, 컨텐츠 자르기 민감성 또는 전송 대역폭 최적화와 같은 시나리오에서 결합 된 사용은 더 큰 제어를 가져올 수 있습니다.
이러한 기술을 통해 PHP 및 MySQL 데이터 상호 작용의 견고성을 향상시킬 수있을뿐만 아니라 후속 기능 확장 및 성능 최적화를위한 좋은 토대를 마련 할 수 있습니다.