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

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

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

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

PHP

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

Q&A

解決済

3回答

292閲覧

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

vitabrevisarsl1

総合スコア57

MySQL

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

PHP

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

0グッド

0クリップ

投稿2017/08/22 03:10

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

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

php

1<?php 2 $pdo = new PDO("mysql:dbname=pop", "root", "passpass"); 3 $st = $pdo->query("SELECT role FROM users"); 4 5 //$link = mysql_connect('pop', 'root', 'passpass'); 6 //$result = mysqli_data_seek('SELECT num FROM pop.users'); 7 8 //$sst = mysql_result($result, 5); 9 $sst = var_dump($st); 10 // $sst = intval($st); 11 if ($sst == 0) {?>

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

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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

はじめに

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

解決法

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

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

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

php

1session_start(); 2

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

php

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

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

php

1session_start(); 2$key = $_SESSION["key"]; 3 4# ここからこの`$key`をもとに、DBからデータを持ってくる

さいごに

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

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

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

投稿2017/08/22 04:07

akakou

総合スコア60

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

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

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

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

投稿2017/08/22 03:19

yambejp

総合スコア114829

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

vitabrevisarsl1

2017/08/22 03:34

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

2017/08/22 03:44

そうなると $stmt = $pdo->query("SELECT role,num FROM users"); $rows=$stmt->fetchAll(PDO::FETCH_ASSOC); foreach($rows as $row) { if($row["num"]==0){  ・・・ }else{  ・・・ } } のような切り分けになるでしょうか? ただしそれが表示されるのはそれを実行しているユーザー自身なので ログインしているユーザーの画面に表示させるような類のものではありません。
guest

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様、ご助言いただき感謝いたします。ありがとうございました。)

投稿2017/08/23 02:34

編集2017/08/23 08:59
vitabrevisarsl1

総合スコア57

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問