バージョン選択

フォーラム

メニュー

オンライン状況

80 人のユーザが現在オンラインです。 (19 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 80
もっと...

サイト内検索

質問 > フロント機能 > 別のもう一つのDatabaseにアクセスする方法

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
osamuya
投稿日時: 2014/6/4 13:11
対応状況: −−−
常連
登録日: 2013/2/4
居住地: 東京
投稿: 65
別のもう一つのDatabaseにアクセスする方法

いつもお世話になっております。
EC-CUBEで利用しているDB以外からある値をinsert,update,deleteみたいなことをしたくて、いろいろやっている最中ではあるのですが、/pages/以下のクラスファイル内のaction()内にSC_Helper_DBをよんで直接$dsnに別DBのパラメーターを入れてやってみたのですが、

$cdb = new SC_Helper_DB();
$dsn = array('phptype' => DB_TYPE,
'username' => DB_USER,
'password' => DB_PASSWORD,
'protocol' => 'tcp',
'hostspec' => DB_SERVER,
'port' => DB_PORT,
'database' => 'another_DB',
);

$re = $cdb->sfColumnExists('M_USER','USER_ID','',$dsn,'false');

最後の$cdb->sfColumnExistsを実行するとエラーになってしまいます。
EC-CUBEのデフォルトのDB接続の際のセッションを見にいって「ない」といって叱られている模様です。
おそらくなのですが、
・セッションをスキップするか、
・同様にセッションを書き込んであげるか、
(あるいは全く別の方法があるか…)
だと思うのですが、具体的にどうすればよいのかは今調べている最中です。

その対象の別DBには、EC-CUBE以外からはアクセスできていて普通に使えます。
また、
$db = mysql_connect ('localhost', 'another_user', 'xxxxxxxx');
mysql_query("set names utf8");
mysql_select_db('another_DB');
.....
というように普通に書いてみましたが、同じようにdtb_sessionにセッションがないといって叱られました。


もし詳しい方でこのようなカスタマイズしたことのある方、
または、すでにこのようなカスタマイズしたことのある方いましたら、
何かしらご教授お願いできますでしょうか。

よろしくお願いいたします。







EC-CUBEのログ
Fatal error(E_USER_ERROR): DB処理でエラーが発生しました。
SQL: [SELECT CASE WHEN EXISTS(SELECT * FROM dtb_session WHERE sess_id = ? ) THEN 1 ELSE 0 END]
MDB2 Error: no such table
_doQuery: [Error message: Could not execute statement]
[Last executed query: PREPARE mdb2_statement_mysql_15xx7cb06cecc9dfxx19a1d6fc3df9aa3c3dbcacxx FROM 'SELECT CASE WHEN EXISTS(SELECT * FROM dtb_session WHERE sess_id = ? ) THEN 1 ELSE 0 END']
[Native code: 1146]
[Native message: Table 'shop.dtb_session' doesn't exist]
on [/home/shop/data/class/SC_Query.php(1007)] from 123.456.789.xxx
customer_id =
(): session_write_close
(): SC_Helper_Session->sfSessWrite
/home/shop/data/class/helper/SC_Helper_Session.php(89): SC_Query->exists
/home/shop/data/class/SC_Query.php(151): SC_Query->getOne
/home/shop/data/class/SC_Query.php(647): SC_Query->prepare
/home/shop/data/class/SC_Query.php(948): SC_Query->error
/home/shop/data/class/SC_Query.php(1007): trigger_error



環境
EC-CUBE 2.12.6
Linux epsfzecw 2.6.32-042stab055.16 #1 SMP Fri Jun 8 19:22:28 MSD 2012 x86_64
MySQL 5.1.73
Apache/2.2.15 (CentOS)
PHP 5.3.3 (Core, date, ereg, libxml, openssl, pcre, zlib, bz2, calendar, ctype, hash, filter, ftp, gettext, gmp, session, iconv, Reflection, standard, shmop, SPL, SimpleXML, sockets, exif, tokenizer, xml, apache2handler, curl, dom, fileinfo, gd, json, mbstring, mysql, mysqli, PDO, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, Phar, sqlite3, wddx, xmlreader, xmlwriter, xsl, zip)
GD 有効 (GD Version => bundled (2.0.34 compatible), FreeType Support => 1, FreeType Linkage => with freetype, T1Lib Support => , GIF Read Support => 1, GIF Create Support => 1, JPEG Support => 1, PNG Support => 1, WBMP Support => 1, XPM Support => 1, XBM Support => 1, JIS-mapped Japanese Font Support => )
HTTPユーザーエージェント Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36
shutta
投稿日時: 2014/6/4 15:12
対応状況: −−−
仙人
登録日: 2010/2/4
居住地: 関西
投稿: 835
Re: 別のもう一つのDatabaseにアクセスする方法
試しに同様の処理を差し込んでみましたが、正常に動作するようです。
差し込む場所によって挙動が異なるんですかね?
ちなみに、どのページクラスのどの位置に実装されましたか?


----------------

リゾート会員権(エクシブ等)の売買・仲介

osamuya
投稿日時: 2014/6/4 18:00
対応状況: −−−
常連
登録日: 2013/2/4
居住地: 東京
投稿: 65
Re: 別のもう一つのDatabaseにアクセスする方法
shuttaさん

返信ありがとうございます。
今のところ非常に適当なのですが、
/data/class/pages/LC_Page_Entry_Kiyaku.php
/data/class/pages/LC_Page_Cart.php

共に
function action() { .... }
内の最後辺りに書きました。

私もちょっといろいろな場所で試してみます。。。
ありがとうございます。

ちなみにshuttaさんはどのクラスファイルに処理してみたのでしょうか?
問題なければ私もそれで試してみたいと思います。

よろしくお願いいたします。


shutta
投稿日時: 2014/6/4 18:30
対応状況: −−−
仙人
登録日: 2010/2/4
居住地: 関西
投稿: 835
Re: 別のもう一つのDatabaseにアクセスする方法
引用:

/data/class/pages/LC_Page_Entry_Kiyaku.php
/data/class/pages/LC_Page_Cart.php

共に
function action() { .... }
内の最後辺りに書きました。


パスが微妙に異なりますが、
/data/class/pages/entry/LC_Page_Entry_Kiyaku.php
/data/class/pages/cart/LC_Page_Cart.php
ですよね?

どちらも試してみましたが、問題ありませんでした。

引用:

ちなみにshuttaさんはどのクラスファイルに処理してみたのでしょうか?
問題なければ私もそれで試してみたいと思います。


商品詳細ページ
/data/class/pages/products/LC_Page_Products_Detail.php
で試していました。

あと、ログインしているかしていないかで違いが出るのかと思って試してみましたが、どちらも問題ありませんでした。


----------------

リゾート会員権(エクシブ等)の売買・仲介

osamuya
投稿日時: 2014/6/9 15:26
対応状況: 保留
常連
登録日: 2013/2/4
居住地: 東京
投稿: 65
Re: 別のもう一つのDatabaseにアクセスする方法
shuttaさん
ありがとうございます。

同じようなやり方でやってみたものの同じエラーにハマってなかなか実現できないでおります。何かしらのやり方があると思うので模索中であります。
いろいろとありがとうございます!
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は89,328名です
総投稿数は110,082件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1652
8
red
1570
9
mcontact
1304
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.