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 インジェクションからの保護に役立つパラメーター化されたクエリを利用できます。
    • それについてのコメントで無関係な議論を始めるSOの全員を止めてください。
于 2013-01-22T16:18:56.383 に答える
0
$_subjects[$k++] = $i;

$imysql_fetch_assoc() を使用しているため、結果セットの連想配列が含まれるため、問題ありません。

これが空の配列を返している場合 (それは正しい問題ですか?)、SQL が正しく、実際に期待どおりのデータ/データを返すことを再確認する必要があります。

編集: Hanky Pankyが述べたように、「k」にはコードに$記号がありません.

于 2013-01-22T16:02:41.257 に答える
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 に答える