<span><span><span class="hljs-meta"><?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">?></span></span><span>
<hr>
</span><span><span class="hljs-meta"><?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>->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-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>-></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>->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>-></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> => </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>-></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>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
</span><span><span class="hljs-meta"><?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">?></span></span><span>
</span></span>
相关标签:
mysqli_result