いつもお世話になっています。
早速質問です。
ユーザ登録フォームの作成をしています。
Select文を使って2重登録の確認後、DBに登録するのですが
2重登録はちゃんと機能しているのに、登録が出来ません。
どのようにしたらいいか、アドバイスいただけますか?
お手数ですが、よろしくお願いします。
mysql_query("lock tables user_data write");
$sql = "select USER from user_data where USER = '" . $_POST["USER"] . "'";
$res = mysql_query($sql);
if (mysql_num_rows($res) > 0) {
echo "すでに登録済みです。";
mysql_query("unlock tables");
mysql_close($con);
exit;
}
$sql = "insert into user_data(USER, pass) values ('" . $_POST["USER"] . "','" . $_POST["pass"] . "');";
mysql_query($sql);
mysql_query("unlock tables");
mysql_close($con);
No.4ベストアンサー
- 回答日時:
たびたびです。
>mysql_query($sql)は何にも表示されませんでした。
print_fじゃなかったですね。print_rかvar_dumpで表示させてみて下さい。trueかfalseになると思います。trueだとしたらinsert文は成功している事になります。それで挿入されてないとしたらちょっとわからないです。もしfalseだとしたら、その直後にmysql_error関数を実行すると、エラーメッセージが取得できます。
あとこれはトラブルの原因とは関係ないと思いますが、前の画面で入力チェックを行っていたとしても、ここでもやった方がいいですよ。例えば閲覧者がスクリプトなど組んで直接この画面を叩く事も有り得る訳ですから。フォームから入力は意図しないものがある事を常に想定していた方が安全です。
出来ました!
なるほど、こうやって一つづつ確認しながらやっていくんですね。
もっと本にもこういうことが書いてあればいいのに…。
お勧めの本とかありますか?
結局問題は基本的なことで、省略していた部分に不要な'があり上手く行ってませんでした。
本当にありがとうございました。
No.5
- 回答日時:
書き忘れました。
そのテーブルのフィールドはUSERとpassだけですか?他にnullを許さないフィールドはないんですよね?
他のフィールドはNULLを可にしてテストしています。
それと、入力値の確認は2重にした方が良いんですね。
これは是非反映させたいと思います。
問題は解決しましたが、締め切ってしまうと回答が受け付けられないので、19時ごろに締め切る予定です。
何回も丁寧な対応、ありがとうございました。
No.3
- 回答日時:
select文のリターンの$res、それとinsert文のmysql_queryの返り値をprint_fで表示させてみましょう。
falseになってるという事はありませんか?期待通りに動かない時は関数の返り値を一つ一つ確認していくしかないと思いますよ。それがデバッグというものです。
で、生成されているSQL文に間違いはないんですよね?入力チェックなどが行われていないのは単にテストプログラムなのか、抜粋なのだと思いはしましたが。
ありがとうございます。
$resはResource ID
$sqlは"insert..."というSQL文(単体で動くので間違いはなさそう)
mysql_query($sql)は何にも表示されませんでした。
入力チェックはもう一つ前に行っています。
入力画面→確認画面→登録画面
宜しくお願いします。
No.1
- 回答日時:
insert文の実行時にエラーか何か出てないのでしょうか?
sqlの実行前に$sqlをprintして、それをmysqlクライアントから実行したらうまく行きますか?最初のselect文もやってみたら良いと思います。mysqlクライアントでエラーが出ればSQLの生成がうまく行ってない、エラーが出ていなければスクリプトでのmysqlとの接続などが疑われます。
ご回答ありがとうございます。
以前同じスクリプトで問題なく登録できたのですが、今回は出来ません。
エラーが出ないところを見るとスクリプトでのmysqlへの接続のようですね。
どこをいじったらいいかアドバイスをいただいても宜しいですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- PHP php ログイン 1 2022/11/01 00:24
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLです!!教えてください。
-
SQLです!!教えてください。
-
SQLです。あってますか?↓
-
SQLです教えてくださいお願いし...
-
SQLです下記の問合せを行うクエ...
-
php テーブルを作れない
-
SQLです教えてくださいお願いし...
-
SQLです。下記の問合せを行うク...
-
テーブル名が可変の場合のクエ...
-
Xサーバーのバックアップで全サ...
-
下記の問合せを行うクエリを、 ...
-
BGMを教えてほしいです!
-
phpmyadmin
-
「第一回模試の3科目の各得点...
-
#1062 - '0' は索引 'PRIMARY' ...
-
複数DBテーブルからのデータ取得
-
【初歩】ラジオボタンをつかっ...
-
下記の問合せを行うクエリを、 ...
-
「最高気温が35度以上の日を猛...
-
次の時間帯の勝率の合計を求め...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLiteについて
-
PHP+MySQLから結果セット取得後...
-
PEARでレコード数の取得
-
MySQLで、INSERT文でエラー
-
SQL whereの中のif文について
-
updateがうまくできない。
-
【php+mysql】mysqlのレコード...
-
コメントが消えてしまいます
-
my sqlはどこにあるのか?
-
大阪府(25件)みたいなカウン...
-
PHP+MySQLでデータ登録がうまく...
-
接続ができません
-
SQLのVARCHARとVARCHAR2の違い
-
副問合せにLIKE文を使う方法は...
-
ODP.NETのバージョン確認
-
ERROR 1045 (28000) (using pas...
-
like句を使って日本語を検索す...
-
VBAで変数内に保持された二次配...
-
MySQLカラム名は日本語と英数字...
-
INT型は金額の型に使用するべき...
おすすめ情報