从MySQL查询多图字段用explode分割后仅首图正常加载问题求助
问题根因分析
你存储到student表file字段的路径字符串本身,在逗号分隔符后自带了多余的空格,例如实际存储的格式为1.jpg, 2.jpg, 3.jpg而非1.jpg,2.jpg,3.jpg。使用explode(',',$images)分割后,除第一个路径外,其余路径的开头都会携带前导空格,拼接src时就会生成uploads/ 2.jpg这类带空格的错误路径,导致图片加载失败。
解决方案
方案1:快速修复(兼容历史数据,无需修改存储逻辑)
在遍历输出图片前,对每个分割后的路径执行trim()操作去除首尾空白字符,修改后的代码如下:
<?php session_start(); $host = "localhost"; /* Host name */ $user = "root"; /* User */ $password = ""; /* Password */ $dbname = "multiple"; /* Database name */ $con = mysqli_connect($host, $user, $password,$dbname); // Check connection if (!$con) { die("Connection failed: " . mysqli_connect_error()); } mysqli_set_charset( $con, 'utf8'); $query = "select file from student"; $result = mysqli_query($con,$query); $row = mysqli_fetch_assoc($result); $images = $row['file']; $images = explode(',',$images); foreach($images AS $image){ // 新增trim去除路径前后的空白字符 $image = trim($image); echo '<img src="uploads/'.$image.'">'; } ?>
方案2:从根源解决问题
修改图片路径插入数据库的逻辑,拼接多路径时直接使用英文逗号作为分隔符,不要在逗号后添加空格:
- 若插入时使用
implode拼接路径数组,直接设置分隔符为',',不要使用", " - 若手动拼接路径,避免在逗号后额外添加空格
内容的提问来源于stack exchange,提问作者Bruno Santos
相关产品推荐
相关产品推荐

