Splitting MySQL column that contains comma-separated list

After you have made your adjustment, you should be echoing out the new variable, rather than the $row value:

for ($i = 0; $i < $num; $i++) {
    $row = mysqli_fetch_assoc($result);
    $jtitle = preg_replace("/\,/", "<br>", $row['title']);
    
    echo "<tr><td width='30%'>$jtitle</td</tr>";
}

We haven’t made any adjustment to the value held in $row['title'], which is why it is still formatted as a comma separated list.

FYI, the sooner you move the values out of the comma separated list into a separate table, the better. One of the core tenets I remember when learning about database design is that if you are trying to store more than one value in a single DB field, your design is probably wrong.

A better option would be to have a separate table that listed the id of the entity you are reporting on and the values you want stored for that entity:

+----------------------------------------+
| entity_value_id | entity_id | value    |
|-----------------|-----------|----------|
| 1               | 1         | Item 2   |
| 2               | 1         | Item 6   |
| 3               | 1         | Item 124 |
+----------------------------------------+

These values could then be requested for your reporting entities. Having your data stored this way can also lead to better performance and allow you to perform some more robust reporting.