

phpでログイン機能を作成したのですが、
ログイン後のページでログインした人の名前を表示することができません。
ご教授頂けますと幸いです。
<?php
$sql = "SELECT * FROM user";
$stmt = $pdo->query($sql);
foreach($stmt as $_SESSION['USERID']){}
echo $_SESSION['USERID']['name'];
?>
例えばこのように記述するとforeachで作成した
最後のレコードのnameが表示されてしまいます。
ログインしているユーザーを特定して、
そのユーザーのnameを表示させたいと思っています。
宜しくお願い致します。
No.5ベストアンサー
- 回答日時:
これではどうでしょう。
$sql = sprintf("SELECT * FROM `user` where `mail` = %s", $pdo->quote($_SESSION['USERID']) );
foreach($pdo->query($sql) as $row){
echo $row['name'];
}
出来ました!!
なんとお礼を言って良いのやら、、
本当に、本当にありがとうございます。
ご飯でもご馳走させてほしいところですが、
とりあえずベストアンサーにさせて頂きます!!
ありがとうございました。
No.4
- 回答日時:
php7でしたら、これでいけるでしょうか。
$sql = sprintf("SELECT * FROM `user` where `mail` = %s", $pdo->quote($_SESSION['USERID']) );
$res = $pdo->query($sql);
echo reset($res)['name'];
No.3
- 回答日時:
ページそのものがエラーになってしまったのなら、
mysql_real_escape_string() が廃止されたphp7なのかもしれませんね。
var_dump($_SESSION);
で、他に検索条件として使えそうなものは確認できないでしょうか。
No.2
- 回答日時:
> ログイン時は
> $_SESSION['USERID'] = $mail;
$_SESSION['USERID']にはメールアドレスが入ってるんですね。
でしたら、
$sql = sprintf("SELECT * FROM `user` where `mail` = '%s'", mysql_real_escape_string($_SESSION['USERID']));
$res = $pdo->query($sql);
echo reset($res)['name'];
ではどうでしょう。
No.1
- 回答日時:
DBの該当テーブル名がuser、そのテーブルのユーザーIDカラム名がuserid、ユーザー名のカラム名がname、ログインしたユーザーのユーザーIDが$_SESSION['USERID']に入っていると仮定するなら、
$sql = sprintf("SELECT * FROM `user` WHERE `userid` = %d" , $_SESSION['USERID']);
$res = $pdo->query($sql);
echo reset($res)['name'];
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpの問い合わせフォームを作っ...
-
フォームで戻った際に入力済み...
-
PHP8でWarning:Undefined varia...
-
BASIC認証のフォームをデザイン...
-
入力フォームの空白や改行を制...
-
PHP8を使うと、大量のWarningが...
-
ファイルアップロードに関して...
-
Q&Aサイトを作成していてURLの...
-
PHPのエラーの解消法について教...
-
composerをインストールしたい...
-
marginの値でマイナス値を設定...
-
submitで思うようにページが遷...
-
HTML PHP ラジオボタンのイベント
-
php でqiitaのサイトにあったフ...
-
SplFileObject を利用したとき...
-
PHPの勉強してます。 配列のと...
-
アップロードファイルを表示す...
-
複数のパソコンの中の1つのパソ...
-
返信機能のツリー構造の深さを...
-
PHPについて。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JAVA SQLServerException 列名 ...
-
<VB.NET>INSERT文でDBにデータ...
-
データベースに存在するデータ...
-
Pro*Cの構文エラー
-
insert1つの処理でもトランザ...
-
PHPからデータベースに接続した...
-
教えて下さい。
-
SQlite
-
プリぺアドステートメントで変...
-
コードで渡したデータを降順に...
-
VB勉強中
-
like検索の複数キーワードで、...
-
PHPよりMySQLの操作のコードの...
-
connectを使ったSQL実行でエラー
-
【PHP】CSVファイル内の文字列...
-
mysql php 複数のクエリ
-
PEARのgetOneでレコードが見つ...
-
ResultSetインターフェイスでの...
-
INSERT,DELETEを同時に
-
ODBC接続でデータ件数を求...
おすすめ情報
回答ありがとうございます。
でも出来なかったです、、、。
どのユーザーで試してもなぜか「S」と表示されます。
==記述文==
$sql = sprintf("SELECT * FROM `user` where `id` = %d",$_SESSION['USERID']);
$res = $pdo->query($sql);
echo reset($res)['name'];
========
テーブルのカラム名:id,name,mail,password
idはAUTO_INCREMENTしてます。
ログイン時は
$_SESSION['USERID'] = $mail;
としています。
お手数をおかけ致しますが、
教えて頂けると大変助かります。
宜しくお願い致します。
恥ずかしながらコードをコピペさせて頂きましたが、
今度はページそのものがエラーになってしまいました。
こちらの記述はメールアドレスに「s」が入っていなくても良いのでしょうか?
何度もお聞きして本当に申し訳ないです。
全てのデータからnameの値は取れるので、
データベースにはちゃんと繋がっているのですが、、、この箇所で詰まってます。
var_dump($_SESSION);
//結果
array(1) { ["USERID"]=> string(3) "c@c" }
id:12
name:ccc
mail:c@c
password:cccccc
のテストユーザーでログインした場合の結果です。
phpは7.0です!
試してみましたが、「s」という文字のみが表示されます。
意味無いかもしれませんが、
var_dump($res)の結果:
object(PDOStatement)#2 (1) { ["queryString"]=> string(41) "SELECT * FROM `user` where `mail` = 'c@c'" }
他の手順で間違っているのでしょうか、、、