[PHP-users 6991] DBデータ取得と関数間の引数について

相良 聡志 php-users@php.gr.jp
Fri, 19 Apr 2002 10:04:58 +0900


初めまして、相良と申します。
先日、当MLに登録させて頂きました。
今はReadOnlyな状況ですが、助っ人として
情報提供ができるように頑張ります。

これまで、IIS+ASPでWEBを構築したことがありますが、
今回、初めてApache+PHPでWEB構築を行います。
今はPHPでどんなことが出来るのかを検証している状況です。
よろしくお願いします。

以下、長文になってしまいました。
申しわけございませんがよろしくお願い致します。

早速、皆様の知識をお借りしたい点が3点あります。
1)DBから値を取得する際、ora_getcolumn($cursor,0)を利用していますが、
カラムの指定を数値ではなく、カラム名で行いたいと考えておりますが
数値での取得しかできません。何とかカラム名で取得できないでしょうか。
(目的:後からソースを見た時にカラム名があれば何をしているのかが分かり易い。
別のカラムデータを出力してしまうコーディングミスを防ぐ)

2)a.phpで設定されたクッキー情報をb.phpファイルのユーザー関数間で
引渡したいと考えております。
(目的:クッキーに格納する情報をグループ管理し、クッキー情報の関数間のやり取り/クリアを
ある時は全クッキー情報、ある時はグループ単位で行いたいのです)

3)URLで引渡された値についても上記2と同様にユーザー関数間で引渡したいと
思います。
(目的:共通関数へ引渡す変数は呼出し元により変化するので、全ての引数を記述するのが嫌(^^ゞ)

環境や現在までに行った設定は以下の通りです。

<環境>
WEBサーバ(WindowsNT4.0 SP5)
DBサーバ(WindowsNT4.0 SP5)
Oracle7.3.3.0.0
SQL*Net2.3.3.0.0
Apache1.3
PHP4.1.2

<現在までの確認状況>
1)DBから取得したデータの取得方法
1.ora_getcolumn($cursor,0)でデータを取得するとできますが、カラム名指定はできませんでした。
調べても記述方法が分からなかったので、ora_getcolumn($cursor,column1)のように記述してみました。

2)クッキーの引渡し
1.$HTTP_COOKIE_VARSを渡し、「$aaa」もしくは$HTTP_COOKIE_VARS[aaa]を
echoすると「Array」という文字列が出力されますが、「$aaa[aaa]」をechoすると
何も出力されません。
2.「$aaa」を渡し、「$aaa[aaa]」をechoすると「111」が正しく出力されます。
3.上記ですと複数のArrayをクッキーに設定した場合、全ての変数を引数として
記述しなければなりません。何とか一つの変数名を渡すだけで全てのクッキー情報を
引渡すことはできないのでしょうか?

3)URL引数の引渡し
これもクッキー同様に引渡す変数名を直接記述すれば(「$hikisuu」)正しく取得できますが、
URLで渡された値が複数存在する場合、関数間でやり取りする引数の記述が膨大になってしまいます。

<以下a.phpのソースです>
------------------------
<?php
setcookie ("aaa[aaa]","111");
setcookie ("bbb[bbb]","222");
?>
<html>
<head>
<title>
テスト
</title>
</head>
<body>
<?php 
$conn = Ora_Logon("userid@oracle", "password");
$cursor = Ora_Open($conn);
$sql = "select code, name from code_table order by code";
$sparse = Ora_Parse($cursor,$sql);
Ora_Exec($cursor);

echo "<table border>";
echo "<tr><td>コード</td><td>名称</td></tr>";
while (Ora_Fetch ($cursor))
{
echo "<tr>";
echo "<td>";
echo ora_getcolumn ($cursor,0)/*コード*/;
echo "</td><td>";
echo ora_getcolumn ($cursor,1)/*名称*/;
echo "</td></tr>";
}
echo "</table>";
Ora_Close($cursor);
Ora_Logoff($conn);
?>
<form name="main" action="syori.php?hikisuu=hhh" method="post">
<input type="text" name="user_data[id]" value="000000">
<input type="text" name="user_data[pass]" value="111111">
<input type="submit" value="送信します">
</form>
</body>
</html>
--------------------------------

<以下b.phpのソースです>
--------------------------------
<?php
if (main($aaa,$hikisuu) == false)
{
	echo "aaaが取得できない";
}

function main($aaa,$hikisuu)
{
	echo $aaa[aaa];
	echo $hikisuu;
	if ($aaa[aaa] == "111")
	{
		return true;
	}
	return false;
}
?>
---------------------------------------

以上です。

※※※※※※※※※※※※※※※※※※※※※※※※※

相良 聡志
E-mail:sagaras@cg.tecsys.co.jp

※※※※※※※※※※※※※※※※※※※※※※※※※