Php 在函数中使用循环
我仍在学习函数及其工作原理。我知道我做错了什么,只是不知道如何修复它。我正在编写一个函数,从数据库中提取图像数据并将其返回到屏幕上。它可以工作,但如果有多个图像,它将只返回最后一个图像。我知道问题是由于while循环的工作方式,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
$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
,并且使用SQLlimit
来过滤结果,因此除非您将第四个参数传递给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);
我默认将其限制为一个,因为其他两种图像类型每种类型只有一个图像。再次感谢。