1

既に記述されている SQL クエリがありますが、from コマンドは小文字です。大文字の書式設定が好きですが、変更するとエラー 1064 が発生します。

select、where、その他もすべて小文字でしたが、大文字に変更すると正常に動作します。これを引き起こすのは WHERE ステートメントだけです。

SQLは次のとおりです。

 $listing_sql = "SELECT " . $select_column_list . 
                        "p.products_id, p.products_model, p.manufacturers_id, p.products_price, " .
                        "p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as " .
                        "specials_new_products_price, IF(s.status, s.specials_new_products_price, " .
                        "p.products_price) as final_price ". 
                        "FROM " . 
                        TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS . " p left join " . 
                        TABLE_MANUFACTURERS . " m on p.manufacturers_id = m.manufacturers_id left join " . 
                        TABLE_SPECIALS . " s on p.products_id = s.products_id, " . 
                        TABLE_PRODUCTS_TO_CATEGORIES . " p2c WHERE p.products_status = '1' AND " .
                        "p.products_id = p2c.products_id and pd.products_id = p2c.products_id and " .
                        "pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . 
                        (int)$current_category_id . "'";

エコーされたときのSQLは次のようになります。

SELECT p.products_image,
       pd.products_name,
       p.products_id,
       p.products_model,
       p.manufacturers_id,
       p.products_price,
       p.products_tax_class_id,
       IF(s.status, s.specials_new_products_price, NULL)             AS
       specials_new_products_price,
       IF(s.status, s.specials_new_products_price, p.products_price) AS
       final_price
FROM   products_description pd,
       products p
       LEFT JOIN manufacturers m
              ON p.manufacturers_id = m.manufacturers_id
       LEFT JOIN specials s
              ON p.products_id = s.products_id,
       products_to_categories p2c
WHERE  p.products_status = '1'
       AND p.products_id = p2c.products_id
       AND pd.products_id = p2c.products_id
       AND pd.language_id = '1'
       AND p2c.categories_id = '36' 
4

2 に答える 2

1

(知識に基づいた) 推測では、OsCommerce のインストールについて話しているということです。

そうでない場合は、一度フォークされたもの (またはその前身であるtep ) を使用している可能性があります。

splitPageResults発生している問題は、クラスのコンストラクターが、 大文字と小文字を区別しないstrposではなく、大文字と小文字を区別する を使用していることが原因である可能性がありますstripos

つまり... 一長一短は、

これが実際に oscommerce の場合:

両方の split_page_results.php ファイルを編集します
(1: /catalog/classes/split_page_results.php 、2: /catalog/admin/classes/split_page_results.php)。

コンストラクターで strpos を stripos に置き換えます。

すなわち変更

$pos_from = strpos($this->sql_query, ' from', 0);

に...

$pos_from = stripos($this->sql_query, ' from', 0);

これが osCommerce でない場合は、同様のものを探してください。

strpoststriposの php ドキュメント

于 2012-10-30T13:43:28.190 に答える
0

代わりに製品に参加してみてください:

SELECT p.products_image,
   pd.products_name,
   p.products_id,
   p.products_model,
   p.manufacturers_id,
   p.products_price,
   p.products_tax_class_id,
   IF(s.status, s.specials_new_products_price, NULL) AS specials_new_products_price,
   IF(s.status, s.specials_new_products_price, p.products_price) AS final_price
FROM   products_description pd
   LEFT JOIN manufacturers m
          ON p.manufacturers_id = m.manufacturers_id
   LEFT JOIN specials s
          ON p.products_id = s.products_id,
            products_to_categories p2c
   LEFT JOIN products p ON ( p.products_id = p2c.products_id )
WHERE  p.products_status = '1'
   AND p.products_id = p2c.products_id
   AND pd.products_id = p2c.products_id
   AND pd.language_id = '1'
   AND p2c.categories_id = '36' 
于 2012-07-04T12:24:25.657 に答える