0

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

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 变量。它包含所有团队的名称。

4

3 回答 3

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 注入的参数化查询。
    • 阻止每个人在关于它的评论中开始一个不相关的论点。
于 2013-01-22T16:18:56.383 回答
0
while($i=mysql_fetch_assoc($r))
                {
                    $_subjects[k++]=$i;
                }

在这里,您还必须为$i. 就像是

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

数组返回部分就好了。

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

于 2013-01-22T15:57:36.113 回答
0
$_subjects[$k++] = $i;

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

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

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

于 2013-01-22T16:02:41.257 回答