从PHP函数返回数组

时间:2013-01-22 15:55:19

标签: php sql return-value

这段代码有什么问题?我试图返回一个数组并在调用函数中使用它。

function my_subjects()
        {   
            $all_my_teams=my_teams();
            $k=0;
            $_subjects=array();
            while($team=mysql_fetch_assoc($all_my_teams))
            {
                $q="SELECT $this->user_field FROM $team";
                $r=mysql_query($q);

                while($i=mysql_fetch_assoc($r))
                {
                    $_subjects[k++]=$i;
                }
            }                   

            return $_subjects;
        }

注意:函数my_teams()返回的值类似于通过all_my_teams变量使用的$ r变量。它包含了所有团队的名字。

3 个答案:

答案 0 :(得分:1)

  1. 调高error_reporting以查看您的代码是否产生错误。
  2. 检查您的查询是否成功if( ! $r=mysql_query($q) ) { die(mysql_error()); }
  3. var_dump($_subjects);查看数据是否符合您的预期。
  4. 也许实际上告诉我们出了什么问题?您刚刚发布了一段代码并告诉我们“它不起作用”。这并不能说明问题。
  5. $k无关紧要,只需使用$_subjects[]=$i;即可。 [不会导致错误,只是更容易]
  6. 停止使用mysql_ *函数并将代码移植到PDO或MySQLi:
    • 从参数化查询中获益,这有助于防止SQL注入。
    • 阻止所有人在SO的评论中开始一个不相关的论点。

答案 1 :(得分:0)

while($i=mysql_fetch_assoc($r))
                {
                    $_subjects[k++]=$i;
                }

在这里,您还必须为$i提供字段名称。像

这样的东西
while($i=mysql_fetch_assoc($r))
                {
                    $_subjects[$k++]=$i["field_name"];
                }

数组返回部分就好了。

编辑:您的变量 k 也缺少$符号。

答案 2 :(得分:0)

$_subjects[$k++] = $i;

应该没问题,因为你正在使用mysql_fetch_assoc()$i将包含结果集的关联数组。

如果这是返回一个空数组(这是正确的问题吗?),你应该仔细检查你的sql是否正确并实际返回你期望的数据/数据。

编辑:就像Hanky Panky提到的那样,'k'在你的代码中缺少$符号 - 这可能是你的问题 - PHP应该为那个问题抛出一个解析错误,所以请确保你有{{3}启用。