毎度お世話になります。まさいちです。

質問なんですが、、、というより教わりたいんですが、
phpではOCILogonとOra_Logon両方で
DBにアクセスできるみたいですけど、OCIとOraって何が違うんでしょう!?

他にもparse exec fetchなどみんな両方ともあって、なんの意味が
あるんだろう??

と疑問を持っています。

暇な方おりましたらテキトーに答えてやってください。

では。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

まず、OCILogon と Ora_Logon の違いは、ORACLE 7と ORACLE 8以降の違いと考えてもらって結構だと思います。

(すごい大雑把ですが。)

頭に「OCI」がつくORACLE関数は、ORACLE 8以降、「Ora」がつく場合は、ORACLE 7用と。
ただ、BLOB, CLOB などを使用しようと思ったら、「OCI」関数でないといけなかったような。

また、parse, exec, fetch はそれぞれ、
parse: SQL文を解析する
exec: parse した SQL 文を実行
fetch: 選択されたレコードを取得
となります。

なので、SELECT の流れとして、
SQL文作成 -> SQL文の解析 -> 実行 -> データの取得
となります。

参考URL:http://www.php.net/manual/ja/ref.oci8.php
    • good
    • 0
この回答へのお礼

へぇぇ、そうなんだぁ。
じゃあ開発環境によってどちらかを使うか変わってくるってことですね。

ありがとう御座いましたtujigeさん!

お礼日時:2001/10/31 11:48

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qsqlite_fetch_sinleの処理が謎である件。(sqlite_fetch_arrayと比較)

//処理

~ 省略 ~

$result = sqlite_query($sql,$db_res);
$info = sqlite_fetch_■■■■($result,SQLITE_ASSOC);
$page_num = $info['page_num'];

//以下、チェック文

//チェック(1)
echo var_dump($info);
echo "<br>";

//チェック(2)
echo var_dump($page_num);
echo "<br>";

//チェック(3)
print_r($info);
echo "<br>";

//チェック(4)
echo $page_num."<br>";

//---------------------------------
// ブラウザに表示される内容↓
//---------------------------------

//---------------------------------
<■■■■が、singleの場合>

string(3) "200"
string(1) "2"
200
2

//---------------------------------
<■■■■が、arrayの場合>

array(1) { ["page_num"]=> string(3) "200" }
string(3) "200"
Array ( [page_num] => 200 )
200

//---------------------------------

私は、singleを使って、

echo $page_num; によって、「200」を
得たかったのですが、「2」が出てきてしまい、
困ってしまいました。

これは、なぜなんでしょう?
singleの仕組みがよく分かりません。

※arrayを使えば、結果的には問題は解決するのですが、
 singleの、この謎を解きたいがために、質問しました。

よろしくお願い致します。
(質問とは関係ありませんが、このサイト、現在かなり重くないでしょうか?)

//処理

~ 省略 ~

$result = sqlite_query($sql,$db_res);
$info = sqlite_fetch_■■■■($result,SQLITE_ASSOC);
$page_num = $info['page_num'];

//以下、チェック文

//チェック(1)
echo var_dump($info);
echo "<br>";

//チェック(2)
echo var_dump($page_num);
echo "<br>";

//チェック(3)
print_r($info);
echo "<br>";

//チェック(4)
echo $page_num."<br>";

//---------------------------------
// ブラウザに表示される内容↓
//---------------------------------
...続きを読む

Aベストアンサー

http://www.php.net/manual/ja/function.sqlite-fetch-single.php
「結果セットの最初のカラムを文字列として取得する」
となっておりますとおり、取得された一番最初に入っているフィールドの文字列を出力します。

で、なぜ、「2」が出力されたのか、に関しましては、下記のサンプルを見てください。
<?php

$string = 'abcdefghijklmnopqrstu';

echo $string[1];

?>
文字列を配列として出力しますと、1バイトずつ表示されます。
上の例ですと、配列の2番目なので、「b」が出力されます。
今回、$info['page_num']とされておりますが、この場合は、'page_num'が0と解釈されるようで、1番目の文字である「2」が出力されております。

QOCI関数

OCI関数を使用しているサンプルなどを見ると
@OCIExecuteなど「@」が付いていますが
この「@」の意味は何でしょうか?

お分かりになる方お願い致します。

Aベストアンサー

@はエラー制御演算子と呼ばれるものです。
PHPの式の前に付けると、その式によりエラーが発生しても生成されたエラーメッセージが無視されます。

参考URL:http://www.php.net/manual/ja/language.operators.errorcontrol.php

Qoci系関数について

PHPでOracleに接続する場合、oci系関数を使うのですが、oci系以外の他の関数からでもオラクルが使えるのでしょうか?
OCIExecuteはoci_execute()の別名ですが、なぜ別名を使う必要があるのですか?
PHP4徹底には ociexecuteと_の無い名前だったのですが、いろいろありすぎて混乱します。何か背景でもあるのでしょうか。

PHPとoracleに特化した本をご存知の方、教えてください。
oracleは9,10で、phpは4,5です。

Aベストアンサー

oci_executeはphp5以降用ですから、旧バージョン(php4)用にociexecuteで書いたソースを「可能な限りそのまま」通すためにaliasを設定しているということだと思います。

∴ociexecuteなどの記述は(相当期間を経てから)消えていくとは思います。

QParse errorが表示されない

Parse errorが表示されない

いつもお世話になっております。
PHPで開発を進めております。

開発するにあたりエラーの表示をしたいのですが、下記の設定を行っても表示されません。
php_flag display_errors on
php_value error_reporting 2039(4096も試しました)

<?php
echo "てすと"
?>

のようにセミコロンを付けないなどのエラーが表示されません。

<?php
if () {
}
?>

if文の条件文が入っていない場合のエラーは表示されます。

<環境>
PHP:5.1.6

何か他に設定するところがあるのでしょうか。
ご教示お願いいたします。

Aベストアンサー

<?php
echo "てすと"
?>

って、1行しかないのだから行区切り文字の;はなくてもエラーに
ならないのでは?

QPHPのエラー教えて!parse error, unexpected T_STRING

すみません
PHPのエラー教えてください
------------------------------内容は↓
<?php
// まずはクラス名を指定
class AboutMe
{
// 変数のタイプを指定します
●ここ●public $name = "デイビッド田中";
public $email = "david.tanaka@davidtanaka.localdomain";
public $phone = "011-81-333-333-3333";

}

// クラスを呼び出します。
$About = new AboutMe();

// 情報を表示します
print($About->name);
?>
---------------------------------ココまで
●ここ●は印のために入れたもの

エラーは
parse error, unexpected T_STRING,
expecting T_OLD_FUNCTION or
T_FUNCTION or T_VAR or '}' in ●ここ●
エラー番号は●ここ●を指しています

WindowXP、Apache、PHP5

すみません
PHPのエラー教えてください
------------------------------内容は↓
<?php
// まずはクラス名を指定
class AboutMe
{
// 変数のタイプを指定します
●ここ●public $name = "デイビッド田中";
public $email = "david.tanaka@davidtanaka.localdomain";
public $phone = "011-81-333-333-3333";

}

// クラスを呼び出します。
$About = new AboutMe();

// 情報を表示します
print($About->name);
?>
---------------------------------ココまで
●ここ●は印のために入れたもの
...続きを読む

Aベストアンサー

手元のPHP5ではエラーになりませんでしたが、PHP4では書かれているエラーが発生しました。
お使いのPHPのバージョンを再度確認してみてはいかがでしょうか。

たまにあるミスとしてコマンドラインとWebサーバでの設定が違っていることがあります。
エラーが起きた環境と同じ手順でバージョンを確認して下さい。


人気Q&Aランキング

おすすめ情報