Php 在函数中使用循环

Php 在函数中使用循环,php,function,while-loop,Php,Function,While Loop,我仍在学习函数及其工作原理。我知道我做错了什么,只是不知道如何修复它。我正在编写一个函数,从数据库中提取图像数据并将其返回到屏幕上。它可以工作,但如果有多个图像,它将只返回最后一个图像。我知道问题是由于while循环的工作方式,$project\u image只返回最后一个图像,但我的问题是如何不使用while循环或使其向$project\u image变量添加多个图像 简化功能 function get_project_image($id,$type="thumb",$src="fals

我仍在学习函数及其工作原理。我知道我做错了什么,只是不知道如何修复它。我正在编写一个函数,从数据库中提取图像数据并将其返回到屏幕上。它可以工作,但如果有多个图像,它将只返回最后一个图像。我知道问题是由于while循环的工作方式,
$project\u image
只返回最后一个图像,但我的问题是如何不使用while循环或使其向
$project\u image
变量添加多个图像

简化功能

   function get_project_image($id,$type="thumb",$src="false",$limit=1){
    if($type =="main"){
        $project_image_qry = mysql_query(" SELECT i_name FROM `project_images` WHERE i_project_id = '$id' AND i_type= '2' LIMIT $limit " ) or die(mysql_error());
        $project_image="";
            while($project_image_row = mysql_fetch_array($project_image_qry)) {
            $project_image_result =  mysql_fetch_array ($project_image_qry);    

                if($src=="true"){
                    $project_image .= '<img src="'.admin_settings('site_url').admin_settings('image_main_dir').'/'.$project_image_result['i_name'].'" alt="project_image"/>';   
                    }
                else{
                    $project_image .= $project_image_result['i_name'];
                    }
            }
        }
    return $project_image;
    }
函数get\u project\u image($id、$type=“thumb”、$src=“false”、$limit=1){ 如果($type==“main”){ $project_image_qry=mysql_query(“从`project_images`中选择i_名称,其中i_project_id='$id',i_type='2'LIMIT$LIMIT”)或die(mysql_error()); $project_image=“”; 而($project\u image\u row=mysql\u fetch\u array($project\u image\u qry)){ $project\u image\u result=mysql\u fetch\u数组($project\u image\u qry); 如果($src==“true”){ $project_image.=''; } 否则{ $project_image.=$project_image_结果['i_name']; } } } 返回$project_图像; }
您的
虽然
状况良好,但您似乎要在
$project\u image\u行
$project\u image\u result
中提取两次,因此您将跳过其他图像。只需获取一次数组(在while循环中很好),并在循环中使用
$project\u image\u result
而不是
$project\u image\u row
来引用该数组:

while($project_image_result = mysql_fetch_array($project_image_qry)) {
    if($src=="true"){
        $project_image .= '<img src="'.admin_settings('site_url').admin_settings('image_main_dir').'/'.$project_image_result['i_name'].'" alt="project_image"/>';   
    }
    else{
        $project_image .= $project_image_result['i_name'];
    }
}
while($project\u image\u result=mysql\u fetch\u array($project\u image\u qry)){
如果($src==“true”){
$project_image.='';
}
否则{
$project_image.=$project_image_结果['i_name'];
}
}

而且,在默认情况下,您似乎告诉它只从数据库请求一个图像。您有一个默认参数
$limit=1
,并且使用SQL
limit
来过滤结果,因此除非您将第四个参数传递给
get\u project\u image
否则
mysql\u查询将只返回一个结果(您没有包括调用
get\u project\u image
,因此我不确定您是否处理了该调用

非常感谢!这非常有效。我相信您可以使用
$project\u image\u result
而不是示例中的
$project\u image\u row
,而在上面的
循环中,没有什么大不了的。关于您的评论,也可以使用
$project\u image\u row
超出默认限制我的函数调用类似于
echo get_project_image($project_row['p_id'],“main”,“true”,2);
我默认将其限制为一个,因为其他两种图像类型每种类型只有一个图像。再次感谢。