현재 위치: > 최신 기사 목록> 유형 불일치가 발생합니까? mysqli_result :: $ lengths를 사용할 때 어떤 유형의 문제에주의를 기울여야하는지 확인하십시오.

유형 불일치가 발생합니까? mysqli_result :: $ lengths를 사용할 때 어떤 유형의 문제에주의를 기울여야하는지 확인하십시오.

gitbox 2025-08-28
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 코드 의이 부분은 텍스트의 내용과 관련이 없습니다.,예를 들어 목적 만</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"스크립트 실행을 시작하십시오...\n"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
<span class="hljs-comment">/*
유형 불일치가 발생합니다?보세요 mysqli_result::$lengths 사용할 때 어떤 유형의 문제에주의를 기울여야하는지
*/</span>

<span class="hljs-comment">/**
 * mysqli_result::$lengths 배열입니다,결과 세트의 각 필드에 해당하는 데이터 길이가 포함됩니다.。
 * 사용할 때주의를 기울이십시오,이러한 길이 값의 유형 및 사용 시나리오。
 */</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">"testdb"</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;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>-&gt;connect_error);
}

</span><span><span class="hljs-variable">$sql</span></span><span> = </span><span><span class="hljs-string">"SELECT id, name, description FROM products"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-variable">$sql</span></span><span>);

</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">instanceof</span></span><span> mysqli_result) {
    </span><span><span class="hljs-comment">// $lengths 정수 배열입니다,요소는 각 필드의 바이트 길이에 해당합니다.</span></span><span>
    </span><span><span class="hljs-variable">$lengths</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>-&gt;lengths;

    </span><span><span class="hljs-comment">// 예:길이 배열을 가져 와서 인쇄하십시오</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-title function_ invoke__">gettype</span></span><span>(</span><span><span class="hljs-variable">$lengths</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>;
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"필드 길이 내용:\n"</span></span><span>;
    </span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$lengths</span></span><span>);

    <span class="hljs-comment">/*
     * 유형 질문의 핵심 요점:
     * 1. $lengths 배열입니다,그리고 각 요소는 정수입니다(int)。
     * 2. 이 길이는 바이트입니다,문자열 길이 함수에 유의하십시오 strlen 얻을 수있는 문자 수는 다릅니다.,특히 멀티 바이트 문자。
     * 3. $lengths 배열은 만 사용됩니다 mysqli::store_result 또는 기본적으로 결과를 버퍼링 할 때 유효합니다.,사용 mysqli_use_result 언제 사용할 수 없습니다。
     * 4. 방문하기 전에 확인하십시오 $result 효과적입니다 mysqli_result 물체,그렇지 않으면 $lengths 존재 나 오류가 없습니다。
     */</span>

    </span><span><span class="hljs-comment">// 进一步예:사용长度信息处理数据</span></span><span>
    </span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$row</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">fetch_assoc</span></span><span>()) {
        </span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$row</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$field</span></span><span> =&gt; </span><span><span class="hljs-variable">$value</span></span><span>) {
            </span><span><span class="hljs-variable">$idx</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_search</span></span><span>(</span><span><span class="hljs-variable">$field</span></span><span>, </span><span><span class="hljs-title function_ invoke__">array_keys</span></span><span>(</span><span><span class="hljs-variable">$row</span></span><span>));
            </span><span><span class="hljs-variable">$len</span></span><span> = </span><span><span class="hljs-variable">$lengths</span></span><span>[</span><span><span class="hljs-variable">$idx</span></span><span>] ?? </span><span><span class="hljs-literal">null</span></span><span>;

            </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"전지 '<span class="hljs-subst">{$field}</span></span></span><span>' 값 길이(바이트)~을 위한:</span><span><span class="hljs-subst">{$len}</span></span><span>\n";
            </span><span><span class="hljs-comment">// 주의를 기울이십시오 $len 是바이트长度,문자열 문자 수와 반드시 같은 것은 아닙니다</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-title function_ invoke__">mb_strlen</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>;
        }
    }

    </span><span><span class="hljs-variable">$result</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">free</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">"쿼리가 실패했거나 결과가 실패했습니다。\n"</span></span><span>;
}

</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 코드 의이 부분은 텍스트의 내용과 관련이 없습니다.,예를 들어 목적 만</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"스크립트 실행 종료。\n"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>