[s2container-php5:33] Re: S2Daoでのinsertについて

Eishi Kuroda kuroda @ jetsetrecords.net
2006年 6月 16日 (金) 13:35:17 JST


ハタ様

回答ありがとうございます。
結論からいうと、問題は解決いたしました。

> 上記のコードで問題なく、私の環境ではうまくいきました。
> 
> PHP5.1.4
> MySQL5.0.18
> 
> エラーメッセージ等はどんなものが表示されていますでしょうか?
> あと、sqlファイルからの実行の場合はどうなりますか?
> 

sqlファイルでもダメでした。
また、エラーメッセージ等は表示されません。

> 
> 作成したスクリプトを以下に置いておきます。
> もしお時間がありましたら、検証してください。m(_ _)m
> 
> http://php.xole.net/sample/empcopy.tar.gz

上記スクリプトでは、問題なく動作しました。
どうやらdaoやentity等、スクリプトの問題では無さそうです。
ですので他を疑ってみることにしました。

実は、今回の作業は、
s2base.php5のmoduleおよびgoyaコマンドで生成したディレクトリ内で
行っているのですが、
s2base.php5によって作成されたdiconディレクトリ内にあった
pdo.disonのS2Container_PDODataSourceのを書き換えて
そのまま使っていました。

その中で、

        <property name="option">
            array(PDO::ATTR_ORACLE_NULLS => PDO::NULL_EMPTY_STRING,
                  PDO::ATTR_AUTOCOMMIT => true);
        </property>

という箇所があるのですが、
PDO::ATTR_AUTOCOMMIT => true
となっているのに全く気付いていませんでした。
そこで、こちらをfalseに変更してみたところ、希望通り動作しました。

ここがtrueのままだと、
多分、insert文の自動生成による挿入(function insert(EmpEntity $emp))も
全く利かないのだろうと思います。
今回試そうとしたinsert文以外には、selectしか試していなかったので
気付きませんでした。

S2Container_PDODataSourceのoptionプロパティがどのように使われるのか
分からないままですが、
もう少し色々やってみます。

では、ありがとうございました。

黒田映史



S2Container-PHP5 メーリングリストの案内