Current Location: Home> Latest Articles> How to Use mysqli_result::fetch_fields with mysqli_fetch_assoc for Complex Queries?

How to Use mysqli_result::fetch_fields with mysqli_fetch_assoc for Complex Queries?

gitbox 2025-08-16
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// This is a PHP code section unrelated to the article content, it can be any initialization or configuration code</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>;
<p></span>$conn = new mysqli($servername, $username, $password, $dbname);<br>
if ($conn->connect_error) {<br>
die("Connection failed: " . $conn->connect_error);<br>
}</p>
<p>$query = "SELECT users.id, users.name, orders.order_date, orders.amount FROM users LEFT JOIN orders ON users.id = orders.user_id";<br>
$result = $conn->query($query);<br>
?></p>
<p><hr></p>
<p><?php<br>
/*</p>
<ul>
<li>
<p>Using mysqli_result::fetch_fields() with mysqli_fetch_assoc()</p>
</li>
<li>
<p>for dynamic handling of complex query results</p>
</li>
<li></li>
<li>
<p>In complex queries, there may be many field names, including duplicates or aliases.</p>
</li>
<li>
<p>Using fetch_fields allows you to get field metadata, and combining it with fetch_assoc</p>
</li>
<li>
<p>lets you read rows as associative arrays, enabling more flexible data processing.<br>
*/</p>
</li>
</ul>
<p>// 1. Get field information<br>
$fields = $result->fetch_fields();</p>
<p>// 2. Print all field names (for demonstration)<br>
$fieldNames = [];<br>
foreach ($fields </span>as </span>$field) {<br>
$fieldNames[] = $field->name;<br>
}<br>
echo "Query fields are: "</span> . implode(", ", </span>$fieldNames) . "<br><br>";</p>
<p>// 3. Fetch data row by row and organize arrays using field names as keys<br>
while ($row = $result->fetch_assoc()) {<br>
echo "User ID: "</span> . $row[</span>'id'] . "<br>";<br>
echo "Username: "</span> . $row[</span>'name'] . "<br>";<br>
echo "Order Date: "</span> . ($row[</span>'order_date'] ?? </span>'No order') . </span>"<br>";<br>
echo "Order Amount: "</span> . ($row[</span>'amount'] ?? </span>'No amount') . </span>"<br>";<br>
echo "<hr>"</span>;<br>
}</p>
<p data-is-last-node="" data-is-only-node="">// 4. Close connection<br>
$result->free();<br>
$conn->close();<br>
?><br>
</span>