![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
FORMで入力された値をもとにデータベースから値を拾ってきて
それを画面に表示させる、という処理をしたいと思っています。
具体的には、usersという「名前」と「ID」が格納されたテーブルがあり、
名前を入力するとその名前に紐付いたIDを表示させるというものです。
usersテーブルには、
id | name
---------
1 | abc
2 | def
3 | ghi
というようなデータが入っています。
下記のように書いているのですが、
IDを拾ってきてくれません。
何を入力しても「あなたのIDはです」
と表示されます。
FORMで入力した値が"abc"なら
「あなたのIDは1です」と表示したいです。
echo $user_name;
を実行すると入力した名前が出てくるので
データベースから抜き出す処理がうまくいっていないと考えてます。
つたない文章になってしまい、
申し訳ありませんが、
お助けいただければと思います。
よろしくお願いいたします。
-------
<?php
if ($_SERVER['REQUEST_METHOD']=="POST") {
foreach($_POST as $k => $v) {
if(get_magic_quotes_gpc()) {
$v=stripslashes($v);
}
$v=htmlspecialchars($v);
$array[$k]=$v;
}
extract($array);
$con = mysql_connect('localhost', '【ユーザー名】', '【パスワード】');
if (!$con) {
exit('DBに接続できませんでした。');
}
$result = mysql_select_db('【データベース名】', $con);
if (!$result) {
exit('データベースを選択できませんでした。');
}
$db = mysql_query('SELECT * FROM users where name='.$user_name, $con);
$db = mysql_fetch_array($db);
$message="あなたのIDは".$db['id']."です";
echo $message;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dt …
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php print $language->language ?>" lang="<?php print $language->language ?>" dir="<?php print $language->dir ?>">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
<title>テスト</title>
</head>
<body>
<form action="<?= $_SERVER['PHP_SCRIPT']; ?>" method="post" accept-charset="UTF-8">
<b>名前:</b><br>
<input type="text" name="user_name" value="" />
<br><br>
<input type="submit" value="ID確認" /><INPUT type="reset" name="reset" value="リセット">
</form>
</body>
-------
No.1ベストアンサー
- 回答日時:
まず大前提としてpostデータをextractするのは最悪なのでやってはいけません
面倒でも変数への代入は指定して処理をしましょう。
そのうえで今回の問題点はここ。
>$db = mysql_query('SELECT * FROM users where name='.$user_name, $con);
$user_nameを文字列としてSQLで参照するならクォートで囲まなくてはいけません。
またmysqlに投げる際には全ての変数はmysql_real_escape_stringするのが基本です。
それと$dbに取った結果を、同じ名前の$dbに受け直すのもあまり美しくありません。
そうじてこんな感じになります。
$user_name=$_POST["user_name"];
$user_name=mysql_real_escape_string($user_name);
$db = mysql_query("SELECT * FROM users where name='".$user_name."'", $con);
$val = mysql_fetch_array($db,MYSQL_ASSOC);
$message="あなたのIDは".$val['id']."です";
早速のご回答ありがとうございます。
おかげさまで正常に動くようになりました。
また、extractするのは良くないとの
助言もいただきありがとうございました。
見つけた時は便利だと思いましたが、
1つ1つ指定して代入するようにしました。
No.2
- 回答日時:
こんにちは。
動作確認したわけでは無いので違っていたら申し訳ないのですが
$db = mysql_query('SELECT * FROM users where name='.$user_name, $con);
のSQLが間違っています。
$db = mysql_query("SELECT * FROM users where name='".$user_name."'", $con);
name='abc'
文字は''で囲まないといけません。
早速のご回答ありがとうございます。
文字列は"で囲まないといけないという
初歩的なミスですみません・・・
おかげさまで正常に動くようになりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP php ログイン 1 2022/11/01 00:24
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpでmysqlを使ってデータベー...
-
PHPで[]の使い方について
-
検索結果($_POST)が2ページ目...
-
mysql_queryで日本語文字列が文...
-
python pandas 行ごとに列名(...
-
自動的にchekboxを
-
dbに登録したデータをphpのプル...
-
PHPでMySQLのデータを2次元配...
-
csvをDBへ読み込んだら、NULLが...
-
実行時エラー3131 FROM 句の構...
-
Pro*Cの構文エラー
-
アポストロフィを含む文字列の追加
-
テキストボックスに入れた内容...
-
子プロセス終了で閉じてしまうm...
-
insert1つの処理でもトランザ...
-
PHP+mysqlでSQL文に文字数制限...
-
VBAをつかってクエリの情報を抽...
-
【初歩】配列の格納データ数だ...
-
phpのエラーについてです
-
SQL文が実行できません
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPで[]の使い方について
-
エクセルVBAについて
-
DBで検索結果に該当するデータ...
-
アラートでyes noを作りたいです。
-
phpでmysqlを使ってデータベー...
-
checkboxクリック時、SQLを実行...
-
dbに登録したデータをphpのプル...
-
PHP+MySQLでの配列のinsert文に...
-
pg_queryの結果を2回とりだす...
-
検索結果($_POST)が2ページ目...
-
PHPについてなのですが未定義の...
-
VBA初心者です。
-
sortable ギブアップです…助け...
-
PEAR::DBで取得したデータで処...
-
DBのデータを表示させたい
-
データベース表示結果のデザイン
-
PHP 勤務時間の合計を出したい
-
mySQLからデータを取り出す
-
PHP と MySQL でテーブルの行数...
-
連想配列、オブジェクト配列の...
おすすめ情報