質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.50%

  • PHP

    20749questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

phpで使うmysql関数を使ってfor文で処理をしたい

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 872
退会済みユーザー

退会済みユーザー

以下のソースのようにwhile文で繰り返して回すことができるのは知ってますが、実際にこれをfor文で処理できるのかどうかが疑問です。

<?php

//…MySQL接続処理省略…

$sql = "SELECT id as userid, fullname, userstatus
        FROM   sometable
        WHERE  userstatus = 1";

$result = mysql_query($sql);

if (!$result) {
    echo "Could not successfully run query ($sql) from DB: " . mysql_error();
    exit;
}

if (mysql_num_rows($result) == 0) {
    echo "No rows found, nothing to print so am exiting";
    exit;
}

while ($row = mysql_fetch_assoc($result)) {
    echo $row["userid"];
    echo $row["fullname"];
    echo $row["userstatus"];
}
?>

質問
phpで使うmysql関数を使ってfor文で処理する方法をわかる方、ご教授おねがいします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

for ( ; $row = mysql_fetch_assoc($result); ) {


こういうことではない?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/05/19 16:58

    ご回答ありがとうございます。説明悪くて申し訳ありませんでした。
    そいうことではなく、

    for ($i=0; $i < 10; $i++) {
    # code...
    }
    上記みたいに機能できないのかと疑問です。

    キャンセル

  • 2016/05/19 17:00

    [追記]
    for文で処理したい理由は,
    for ($i=0,$j=0; $i < 10 && $j < 10; $i++,$j++) {
    # code...
    }

    みたいにfor文上で結合して、活用したいからです。

    キャンセル

  • 2016/05/19 17:14 編集

    要はレコード位置を指定してデータを取得できないか、ってことですよね。
    一旦配列に全部取り込むくらいしかないんじゃないかと思います。
    $rows = Array();
    while ($row = mysql_fetch_assoc($result)) {
    $rows[] = $row;
    }
    for( $i = 0; $i < 10; $i++ ){
    echo $rows[$i]["userid"];
    }

    配列に取り込むのはPDOを使えばfetchAllで丸ごと取得できるようです。

    ただいずれにしても配列に取り込むということは、データ量によってはリソースを大量に使うことになるので注意が必要です。

    キャンセル

  • 2016/05/19 17:55

    $iと$jの役割がわからないので曖昧な感じですがselectで取得したデータの内$i,$jの条件に合うものだけが必要ならphpではなくlimitを使って問い合わせの段階で絞り込むべきだと思いますよ

    キャンセル

  • 2016/05/19 19:20

    解決されているのですが、気になったので

    mysql関数はPHP5.5で非推奨になっており、7では削除されています。
    代替の「MySQLi」かPDOを使用されることをおすすめします。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.50%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    20749questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。