目次
CHAPTER 2 フロント機能をカスタマイズする
SECTION-2 商品詳細
Tips 031 簡易ダウンロード販売をする

[応用編] 高度なダウンロード販売のカスタマイズをしようとするとSQLエラーが出て動かない

tags:
PHP
その他
PostgreSQL
DB
商品詳細
ダウンロード

PostgreSQL環境で、p.108の■8「高度な設定」のカスタマイズを行うと、下記のSQLエラーが出力され失敗します。

出力されたエラー
SELECT * FROM dtb_order as do,dtb_order_detail as dod WHERE do.del_flg = 0 and do.order_id = dod.order_id and do.create_date > ? and  dod.product_id = ?   
DB Error: syntax error

SELECT * FROM dtb_order as do,dtb_order_detail as dod WHERE do.del_flg = 0 and do.order_id = dod.order_id and do.create_date > '2010-04-28' and  dod.product_id = '5'    [nativecode=ERROR:  syntax error at or near "do" at character 28]

/var/www/html/ec/html/download.php 33:LC_Page_Download->process
/var/www/html/ec/data/class/pages/LC_Page_Download.php 85:SC_Query->select
/var/www/html/ec/data/class/SC_Query.php 95:SC_DbConn->getAll
/var/www/html/ec/data/class/SC_DbConn.php 164:DB_common->getAll
/var/www/html/ec/data/module/DB/common.php 1610:DB_common->execute
/var/www/html/ec/data/module/DB/common.php 959:DB_pgsql->simpleQuery
/var/www/html/ec/data/module/DB/pgsql.php 338:DB_pgsql->pgsqlRaiseError
/var/www/html/ec/data/module/DB/pgsql.php 786:DB_common->raiseError
/var/www/html/ec/data/module/DB/common.php 1853:PEAR->raiseError
/var/www/html/ec/data/module/PEAR.php 557:DB_Error->DB_Error
/var/www/html/ec/data/module/DB.php 893:PEAR_Error->PEAR_Error

原因はPostgreSQLの予約語


原因はSQLで使用しているテーブル名の別名「do」がPostgreSQLでは予約語であるため、SQLエラーが発生することです。

対処方法として、data/class/pages/LC_Page_Download.phpの83行目付近にある「do」の部分を他の文字列に書き換えてください。

以下の例では「do」→「dor」に書き換えています。
変更
$table = "dtb_order as dor,dtb_order_detail as dod";¬
$where = "dor.del_flg = 0 and dor.order_id = dod.order_id and dor.create_date > ? and  dod.product_id = ?";

サポート情報を探す

ダウンロードファイルの入手はこちら!

EC-CUBEのカスタマイズのご依頼は

全国有名書店で好評発売中!

オレンジ岸本がEC-CUBEの激役立ちTipsを100個一気に大公開!EC-CUBEに関わる全ての方々、必見の一冊。

  • Amazon.co.jp
  • 楽天ブックス