前提・実現したいこと
フォームでIDを入力し、$_POSTで受け取ったIDをSQL文に挿入して該当するユーザーの名前を表示させたいのですが、
現状、実行すると「あなたの名前は1です。」と表示されてしまいます。
bindvalueでプレースホルダに挿入する時に何らかのエラーが起きているのは何となく想像つくのですが、
原因がいまいち特定できません。
ご教示頂けましたら幸いです。
発生している問題・エラーメッセージ
Notice: Undefined variable: id in C:\xampp\htdocs\test2\sousin.php on line 23
該当のソースコード
PHP
1<?php 2 3// Your code here! 4try{ 5 6 $pdo = new PDO( 7 'mysql:host=127.0.0.1;dbname=test;charset=utf8', 8 "root", 9 "", 10 [ 11 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 12 PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 13 ] 14 ); 15 16} catch (PDOException $e){ 17 header('Content-Type: text/plain; charset=utf8', true, 500); 18 exit($e->getMessage()); 19} 20 21 $username_sql = 'SELECT user_name FROM users WHERE id = ?'; 22 $stmt = $pdo -> prepare($username_sql); 23 $stmt -> bindvalue(1,$id,PDO::PARAM_STR); 24 $username = $stmt -> execute(); 25 26echo "あなたの名前は".$username."です。" 27 28?> 29 30<!DOCTYPE html> 31<html> 32<head> 33 <title>Page Title</title> 34<body> 35 <form class="" action="sousin.php" method="post"> 36 <label for="id">ユーザーID:</label> 37 <input type="text" name="id" id="id"> 38 <input type="submit" value="ログイン"> 39 </form> 40</body> 41</html>
試したこと
XAMPのコンソールで「SELECT user_name FROM users WHERE id ="hoge"」と入力した際には
+-----------+
| user_name |
+-----------+
| huga |
+-----------+
と正常に表示されています。
補足情報(FW/ツールのバージョンなど)
XAMPP Version: 7.2.7
PHP Version 7.2.7
10.1.34-MariaDB
###追記!!!!
コピーする際に
「$id = htmlspecialchars($_POST["id"]);」
が抜けてしまいました;;
大変申し訳ないです。
本来のソースコード
PHP
1<?php 2 3// Your code here! 4try{ 5 6 $pdo = new PDO( 7 'mysql:host=127.0.0.1;dbname=test;charset=utf8', 8 "root", 9 "", 10 [ 11 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 12 PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 13 ] 14 ); 15 16} catch (PDOException $e){ 17 header('Content-Type: text/plain; charset=utf8', true, 500); 18 exit($e->getMessage()); 19} 20 21 $id = htmlspecialchars($_POST["id"]); 22 23 $username_sql = 'SELECT user_name FROM users WHERE id = ?'; 24 $stmt = $pdo -> prepare($username_sql); 25 $stmt -> bindvalue(1,$id,PDO::PARAM_STR); 26 $username = $stmt -> execute(); 27 28echo "あなたの名前は".$username."です。" 29 30?> 31 32<!DOCTYPE html> 33<html> 34<head> 35 <title>Page Title</title> 36<body> 37 <form class="" action="sousin.php" method="post"> 38 <label for="id">ユーザーID:</label> 39 <input type="text" name="id" id="id"> 40 <input type="submit" value="ログイン"> 41 </form> 42</body> 43</html>
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/23 09:53
退会済みユーザー
2018/08/23 09:56