[PHP-users 11057] フォームの変数をPostgreSQLにINSERT

php-users@php.gr.jp php-users@php.gr.jp
24 Oct 2002 11:33:00 +0900


こんにちは。
お忙しいとは思いますが、
よろしくお願い致します。

過去履歴を徹夜で見て、
register_globals、変数、フォームなどをキーワードに検索をしたのですが、
どうしてもうまくいきませんでした。

PHPそのものを理解していないと言われてしまうと思うのですが、教えてください。

まず以下のようなPHPからPostgreSQLへのデータ投入例があります。

form.html

<form action="insert.php" method="post">
<input size="20" type="text" name="name">
<input type="submit" value="登録">
</form>


insert.php

$sql_insert = "insert into test (name) values ('$name')";


PHP4.2.0以前(4.1.0になるんでしたっけ?)では、
上記内容でPOSTの変数を受け取ってデータが投入されていて、
最近、register_global がoffになったことなどによって、
変更点があるということも分かりました(解釈が間違っていたらご指摘ください。)。

とりあえず、insert.php に

if($HTTP_POST_VARS != ""){ // 呼び出しパラメータを取得
	    while (list($key,$val) = each($HTTP_POST_VARS)) {
		$$key = $val;
							    }
			}

を加えて、

$sql_insert = "insert into test (name) values ('$name')";

でも従来通りデータは投入されるようになったのですが、

さて、

if($HTTP_POST_VARS != ""){ // 呼び出しパラメータを取得
	    while (list($key,$val) = each($HTTP_POST_VARS)) {
		$$key = $val;
							    }
			}

を書かない場合、

insert.php はどのように書けばうまくいくのでしょうか。

ちなみに恥ずかしながら試してみたものを公開しますと、

$sql_insert = "insert into test (name) values (' ".$_POST['$name']." ' );

です。

過去歴を見て、そのまんまやってみたのですが、
上記では変数を受け取ることができませんでした。

これは insert.php に問題があるのでしょうか。
それとも form.html にも何か仕掛けをしてやらないといけないのでしょうか。

以上、ご教授ください。
よろしくお願い致します。