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

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

ただいまの
回答率

90.50%

  • PHP

    24080questions

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

  • MySQL

    7006questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MySQLテーブルからの値の取得 について

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 570

DB名:pop table名:users の中にカラムnumがあり、全行に0または1が振られています。

現在ログインしているuserのnum値を取得したいです。この値($sst = numとします)をif分で条件分岐に使いたいのでint型で取得したいです。

<?php
                $pdo = new PDO("mysql:dbname=pop", "root", "passpass");
                $st = $pdo->query("SELECT role FROM users");

                //$link = mysql_connect('pop', 'root', 'passpass');
                //$result = mysqli_data_seek('SELECT num FROM pop.users');

                //$sst = mysql_result($result, 5);
                $sst = var_dump($st);
                // $sst = intval($st);                
                if ($sst == 0) {?>


あるuserのnumが0ならば(if)~
あるuserのnumが1ならば(elseif)~

という流れを考えたのですが、ご覧の通り惨敗です。
numのデータを取得しても、現在ログインしているユーザーの番号を指定できないといけないのではないか?との疑念が浮かび、調べております。

ご教授いただけますと幸いです。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 3

+1

仕様がブレブレで何をどうしたいのかわかりません。
カラムnumが0がログインしていないユーザー、1がしているユーザーなら
where num=1
だけでログインユーザー一覧は得られます。
なにか別のルールでログインしている・していないを管理しているなら
それに合わなくてはいけません。

あるuserのnumが0ならば(if)~
あるuserのnumが1ならば(elseif)~ 

ならば・・どうしたいのでしょうか?

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/08/22 12:34

    ご指摘いただきありがとうございます。
    ・num0:管理権あり num1:管理権無し
    ・userのnumが0ならば(if)~削除ボタン表示
     serのnumが1ならば(elseif)~削除ボタン非表示
    という内容です。

    キャンセル

  • 2017/08/22 12:44

    そうなると

    $stmt = $pdo->query("SELECT role,num FROM users");
    $rows=$stmt->fetchAll(PDO::FETCH_ASSOC);
    foreach($rows as $row) {
    if($row["num"]==0){
     ・・・
    }else{
     ・・・
    }
    }

    のような切り分けになるでしょうか?
    ただしそれが表示されるのはそれを実行しているユーザー自身なので
    ログインしているユーザーの画面に表示させるような類のものではありません。

    キャンセル

0

_show.php というファイルが当該内容の対象ファイルでした。
問題の箇所の更に上部に

$role = $this->session->userdata('role');

if($role == '1'){ $constant[] = "del_flag"; }

との記述があることから、コマンドプロンプト:

MariaDB [pop]> select * from pop.users;

で表示される一覧中、roleカラムがすでにphpにおいて定義済みであることがわかりました。これを(通常上流のdirectoryで定義する)フレームワークというのでしょうか? いずれにせよ

if ($role == 0) {

で機能しました。

簡単ながらご報告いたします。
(akakou様ならびにyambejp様、ご助言いただき感謝いたします。ありがとうございました。)

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

checkベストアンサー

-2

 はじめに

こんにちは。
あかこうと申します。
よろしくお願いします。

 解決法

ログイン時に何かしら、keyとなるユーザの情報を受取、セッションを用いて共有する方法はどうでしょうか?

 ログイン画面の処理(keyをセッションに保存)

 事前にセッションを有効にしておき

session_start();


このサイトにかかれているように、ログイン等のkeyとなるユーザ情報が打ち込まれるタイミングで

$_SESSION["key"] = $keyとなるユーザ情報;

 現在ログインしているuserのnum値を取得

session_start();
$key = $_SESSION["key"];

# ここからこの`$key`をもとに、DBからデータを持ってくる

 さいごに

以上のような説明でよろしかったでしょうか?
何か質問があれば是非お願いします。答えられる限り答えたいと思います。

また今回の回答は認証を独自等でやってる場合を想定してます。
独自認証はセキュリティ面で問題があることがあるので、フレームワークを使いましょう。

もしすでに何かしらフレームワークを使っており、そのフレームワークを使って認証等したのであれば、そのフレームワーク内にユーザのkeyを受け取る機能が備わっていると思います。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

  • PHP

    24080questions

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

  • MySQL

    7006questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。