<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 这是与文章内容无关的PHP代码部分,可以是任意初始化或配置代码</span></span><span>
</span><span><span class="hljs-variable">$servername</span></span><span> = </span><span><span class="hljs-string">"localhost"</span></span><span>;
</span><span><span class="hljs-variable">$username</span></span><span> = </span><span><span class="hljs-string">"root"</span></span><span>;
</span><span><span class="hljs-variable">$password</span></span><span> = </span><span><span class="hljs-string">""</span></span><span>;
</span><span><span class="hljs-variable">$dbname</span></span><span> = </span><span><span class="hljs-string">"test_db"</span></span><span>;
</span><span><span class="hljs-variable">$conn</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-variable">$servername</span></span><span>, </span><span><span class="hljs-variable">$username</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$dbname</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$conn</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">$conn</span></span><span>->connect_error);
}
</span><span><span class="hljs-variable">$query</span></span><span> = </span><span><span class="hljs-string">"SELECT users.id, users.name, orders.order_date, orders.amount FROM users LEFT JOIN orders ON users.id = orders.user_id"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$conn</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-meta">?></span></span><span>
<hr>
</span><span><span class="hljs-meta"><?php</span></span><span>
<span class="hljs-comment">/*
* mysqli_result::fetch_fields() 与 mysqli_fetch_assoc() 联合使用
* 用来实现复杂查询结果的动态处理
*
* 复杂查询中,字段名可能很多,且有重复或别名,使用fetch_fields可以获取字段元信息,
* 结合fetch_assoc可以逐行以关联数组方式读取数据,实现更灵活的数据操作。
*/</span>
</span><span><span class="hljs-comment">// 1. 获取字段信息</span></span><span>
</span><span><span class="hljs-variable">$fields</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>-></span><span><span class="hljs-title function_ invoke__">fetch_fields</span></span><span>();
</span><span><span class="hljs-comment">// 2. 打印所有字段名称(演示用途)</span></span><span>
</span><span><span class="hljs-variable">$fieldNames</span></span><span> = [];
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$fields</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">$fieldNames</span></span><span>[] = </span><span><span class="hljs-variable">$field</span></span><span>->name;
}
</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__">implode</span></span><span>(</span><span><span class="hljs-string">", "</span></span><span>, </span><span><span class="hljs-variable">$fieldNames</span></span><span>) . </span><span><span class="hljs-string">"<br><br>"</span></span><span>;
</span><span><span class="hljs-comment">// 3. 逐行取数据并以字段名为键组织数组</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">echo</span></span><span> </span><span><span class="hljs-string">"用户ID: "</span></span><span> . </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'id'</span></span><span>] . </span><span><span class="hljs-string">"<br>"</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-variable">$row</span></span><span>[</span><span><span class="hljs-string">'name'</span></span><span>] . </span><span><span class="hljs-string">"<br>"</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-variable">$row</span></span><span>[</span><span><span class="hljs-string">'order_date'</span></span><span>] ?? </span><span><span class="hljs-string">'无订单'</span></span><span>) . </span><span><span class="hljs-string">"<br>"</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-variable">$row</span></span><span>[</span><span><span class="hljs-string">'amount'</span></span><span>] ?? </span><span><span class="hljs-string">'无金额'</span></span><span>) . </span><span><span class="hljs-string">"<br>"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<hr>"</span></span><span>;
}
</span><span><span class="hljs-comment">// 4. 关闭连接</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-variable">$conn</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
相关标签:
mysqli_result