![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
FC4、php5とmysql4.1.20を入れて学習しています。
入力フォームに
<form action="insert.php?mode=insert" method="POST"......と書き、
データ受取phpスクリプトに
<?
if($mode == "insert"){
$conn = mysql_connect("localhost","root","pass");
mysql_select_db("testDB","$conn");
$sql = "INSERT INTO SHOHIN (tanka,suu) values ('$tanka','$suu')";
...........
と書いたサンプルがあります。
ところが、入力フォームにデータをいれ、登録ボタンを押すと
urlが、
http://localhost/***/insert.phpから
http://localhost/***/insert.php?mode=insert に変わりますが、入力欄が白紙に戻ってデータ登録が出来ません。(そもそも、DBに接続が出来ません。)
php.iniの register_globals = On にしても、状況は同じです。
コマンドライン上では、同じユーザ名パスワードでmysqlに順調に接続できデータ登録も出来ます。
試みに、php.iniの register_globals = Offで
if($mode == "insert"){ を、if($_POST['$mode == insert']){ と変えてみましたが、解決出来ません。この書き方が拙いのでしょうか?
何かアドバイスを頂ければ有り難いです。よろしくお願いします。
No.3ベストアンサー
- 回答日時:
>しかし、この if($_GET['mode'] == 'insert']){ という書き方自体が、
>あまり一般的ではなさそうなので、これ以上、深追いしないことにします。
返信ドモです。
何が一般的かどうかは書籍によって違うので、あまり鵜呑みにしない方が良いかもしれません。PHPは人によって会社によって組み方が全く違いますので・・。大事なのは柔軟な思考かもしれません。
>参考書にGET、POSTの違いが、チラリと書いてあるだけなので、
至極簡単に言うとURLにくっつけて送信するのがGET。フォームで送信するのがPOSTです。
使い分けのポイントとしては、Aタグで次ページにリンクする際に、ちょっとしたパラメータを渡したいって際にはGETを使います。
ちょっと語弊があるかもしれませんが、お手軽なのがGETって覚えておくと宜しいかと。
ただし日本語をやり取りする際にはエンコードしなければならないので逆に面倒ですし、URLにくっつけて送信するのでPASSワードのような機密性のあるデータの送信には向きません。
一方POSTは基本的にFORMタグが無ければ使えませんので(例外的にPEARを使うとフォーム無しでもPOSTできます)GETよりはお膳立てが若干面倒です。
ですが、送信しなければならないパラメータ量が多い場合や日本語もそのまま送信できますし、写真などのファイルも送信できます。
要するに大量データの送信に向いてると思えば宜しいかと。
他、セッションってのもありますが、これはまた別の機会で。
具体的に説明頂き、GET、POSTに対するイメージが少し膨らんできました。このコメントをコピーして本に貼り付けておき、今後の参考にしたいと思います。本当に有難うございました。
No.2
- 回答日時:
<form action="insert.php?mode=insert" method="POST">
メソッドがPOSTでもURLのquery stringで送った値は$_GET変数に入ります。
>$sql = "INSERT INTO SHOHIN (tanka,suu) values ('$tanka','$suu')";
この部分も多分
$tanka = $_POST['tanka']; $suu= $_POST['suu'];
が必要な気がします。
>php.iniの register_globals = On にしても、状況は同じです。
これは変ですねApacheの再起動をしてないのでは
そのサンプルを動かすのならOnにしたほうが面倒はないですができればregister_globals = Offに対応したサンプルのほうがいいと思います。
php504様
大変良く解りました。
>メソッドがPOSTでもURLのquery stringで送った値は$_GET変数に入ります。
そういうことか! と参考書に書いてあることが納得です。
>>php.iniの register_globals = On にしても、状況は同じです。
>これは変ですねApacheの再起動をしてないのでは
とありましたので、 register_globals = On にして、
httpd restartをして試してみましたが、DBに接続できませんでした。
ご指摘の通り
$sql = "INSERT INTO SHOHIN (tanka,suu) values ('$tanka','$suu')";
文の変数も、$_POST($_GET?)で受取るようにする必要があるのかも知れません。
しかし、if($_GET['mode'] == 'insert']){ という書き方が、
あまり一般的ではないような気がしますので、素直に
if($conn==FALSE){ という書き方に変更して行こうと思います。
お蔭様で、大変、勉強になりました。有難うございました。
No.1
- 回答日時:
> <form action="insert.php?mode=insert" method="POST"......と書き、
とあるので
> if($_POST['$mode == insert']){
ではなく(注:セミコロンの付け方が間違ってますよ)
if($_GET['mode'] == 'insert']){
が正解では?
foreeach様
当初、
>if($_GET['mode'] == 'insert']){
>が正解では?
の意味が良く解りませんでしたが、Ano2でフォローを頂きましたので理解できました。
$_GETでやると、うまくDBに繋がりました。なるほど!といった感じです。
しかし、データの登録は、まだできていません。
$sql = "INSERT INTO SHOHIN (tanka,suu) values ('$tanka','$suu')";
の文をもう少し変える必要があるのかも知れません。
しかし、この if($_GET['mode'] == 'insert']){ という書き方自体が、
あまり一般的ではなさそうなので、これ以上、深追いしないことにします。
参考書にGET、POSTの違いが、チラリと書いてあるだけなので、
つい読みすごしていましたが、お蔭様で確認することができました。有難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP php エラー 2 2022/10/23 16:43
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- MySQL mysqlで INSERT と SELECTの用途は 1 2022/04/01 00:45
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- PHP プログラムコードを入力する場合改行してもいいですか? 2 2022/10/02 16:05
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- PHP php エラー 3 2022/11/18 23:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
AccessのDoCmd.SendObjectについて
-
存在しないメールアドレスかど...
-
UWSCにつきまして
-
submitボタンの二重送信について
-
【追加】ファイルを閉じてダイ...
-
if($mode == "insert"){ の書き...
-
mb_send_mailについて
-
コマンドプロンプトで添付ファ...
-
送信日時を指定してメールを送...
-
phpでアドレス形式をチェックす...
-
ループの中で mailItemObj.Disp...
-
onedrive にexcelファイルをア...
-
.phpと.incファイルの違いはな...
-
トランザクションが原因?DBに...
-
フォントの色を変えるには?
-
現在位置より2つ上のディレク...
-
CFileDialogの最初のディレクト...
-
VBSの「MsgBox」について
-
HPを開くとダウンロードページ...
-
3つ以上の論理積は利用可能なの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6にてメールを送信する方法
-
存在しないメールアドレスかど...
-
AccessのDoCmd.SendObjectについて
-
VBでメールを送る時のSMT...
-
phpのmb_send_mailが迷惑メール...
-
Bookを閉じて保存した時のみ実...
-
コマンドプロンプトで添付ファ...
-
メールアドレスの存在確認はで...
-
Windowsサーバーでメール送信プ...
-
submitボタンの二重送信について
-
ループの中で mailItemObj.Disp...
-
powerbuilderのメール機能について
-
空メールの作り方教えて欲しい...
-
MAPI コンポーネントを使ったメ...
-
【エクセルVBA】メール送信前に...
-
★エクセルVBAでOutlookのメール...
-
SMTPサーバの指定なしでメ...
-
phpでメールを送信
-
メールアドレスを追加して、他...
-
【PHPでメルマガ配信したい!】...
おすすめ情報