函数未按预期返回数据

时间:2011-12-15 13:41:30

标签: php mysql arrays hyperlink

我有一个函数应该返回一组基于用户ID的链接。该函数暂时执行的是它只返回一个链接而不是基于用户ID的一组链接。该函数如下所示:

function retrieve_image_link($user_id)
{   
    $query  = mysql_query("SELECT `image_link` FROM `imgit_images` WHERE user_id = '" . intval($user_id) . "'");

    while ($row = mysql_fetch_assoc($query))
    {
        $link = $row['image_link'] . '<br />';  
    }
    mysql_free_result($query);

    return $link;
}

所以这是应该为我提供多个链接的代码,而不仅仅是一个。查询返回字符串而不是数组的问题在哪里?

请帮忙!

4 个答案:

答案 0 :(得分:4)

您需要将链接应用于$array[] = "link";

等数组
function retrieve_image_link($user_id)
{   
    $query  = mysql_query("SELECT `image_link` FROM `imgit_images` WHERE user_id = '" . intval($user_id) . "'");

    while ($row = mysql_fetch_assoc($query))
    {
        //add bracktes  to $link to return an array
        $link[] = $row['image_link'] . '<br />';  
    }   
    mysql_free_result($query);

    return $link;
}

或使用.= opperator,如果您想要一个大字符串中的所有链接

function retrieve_image_link($user_id)
{   
    $query  = mysql_query("SELECT `image_link` FROM `imgit_images` WHERE user_id = '" . intval($user_id) . "'");

    while ($row = mysql_fetch_assoc($query))
    {
        //add . to = to append string to $link
        $link  .= $row['image_link'] . '<br />';  
    }   
    mysql_free_result($query);

    return $link;
}

答案 1 :(得分:1)

问题似乎在这里

$link = $row['image_link'] . '<br />'; 

在循环结束时,$ link应该具有最后一个值而不是所有值。您必须附加每个链接或创建一个数组来推送每个链接。

答案 2 :(得分:0)

$link = $row['image_link'] . '<br />';

你正在覆盖循环中$ link的值。添加[]以使其成为数组:

function retrieve_image_link($user_id)
{   
    $query  = mysql_query("SELECT `image_link` FROM `imgit_images` WHERE user_id = '" . intval($user_id) . "'");

    $link = array( );
    while ($row = mysql_fetch_assoc($query))
    {
    $link[] = $row['image_link'] . '<br />';  
    }
    mysql_free_result($query);

    return $link;
}

答案 3 :(得分:0)

使用。=

function retrieve_image_link($user_id)
{   
    $query  = mysql_query("SELECT `image_link` FROM `imgit_images` WHERE user_id = '" . intval($user_id) . "'");

    while ($row = mysql_fetch_assoc($query))
    {
        $link .= $row['image_link'] . '<br />';  
    }
    mysql_free_result($query);

    return $link;
}