【问题标题】:An sql query that is already work well on hosting, but not work on WAMP一个已经在主机上运行良好但在 WAMP 上运行良好的 sql 查询
【发布时间】:2014-02-01 20:46:28
【问题描述】:


我有一个 sql 查询已经在主机上运行良好,但在 WAMP 上却没有我收到 SQL 错误 1064,请帮助。
谢谢!

$query = 'SELECT p.products_id, p.products_image, p.products_tax_class_id, p.products_ordered, IF (s.status, s.specials_new_products_price, NULL) AS specials_new_products_price, p.products_price, pd.products_name, p.products_model';


    if ( defined('FEATURED_MODUL_SPECIALS_ONLY') AND FEATURED_MODUL_SPECIALS_ONLY == 'true' ) {
            $query .= 'FROM ' . TABLE_SPECIALS . ' s LEFT JOIN ' . TABLE_PRODUCTS . ' p ON s.products_id = p.products_id ';
    } else {
            $query .= 'FROM ' . TABLE_PRODUCTS . ' p LEFT JOIN ' . TABLE_SPECIALS . ' s ON p.products_id = s.products_id ';
    }
    if ($current_page != FILENAME_DEFAULT)  { 
        $query .= 'LEFT JOIN ' . TABLE_PRODUCTS_DESCRIPTION . " pd ON p.products_id = pd.products_id AND pd.language_id = '" . $languages_id . "'
        LEFT JOIN " . TABLE_FEATURED . " f ON p.products_id = f.products_id
        WHERE p.products_status = '1' AND f.status = '1' order by rand($mtm) DESC limit " . FEATURED_MODUL_MAX_DISPLAY;
    }else{
        $query .= 'LEFT JOIN ' . TABLE_PRODUCTS_DESCRIPTION . " pd ON p.products_id = pd.products_id AND pd.language_id = '" . $languages_id . "'
        LEFT JOIN " . TABLE_FEATURED . " f ON p.products_id = f.products_id
        WHERE p.products_status = '1' AND f.status = '1' order by rand($mtm) DESC limit " . FEATURED_MODUL_MAX_DISPLAY_FIRST_PAGE;
    }

我在 WAMP 服务器上遇到错误:
1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“p LEFT JOIN specials s ON p.products_id = s.products_id LEFT JOIN products_descr”附近使用正确的语法

SELECT p.products_id, p.products_image, p.products_tax_class_id, p.products_ordered, IF (s.status, s.specials_new_products_price, NULL) AS specials_new_products_price, p.products_price, pd.products_name, p.products_modelFROM products p LEFT JOIN specials s ON p.products_id = s.products_id 左连接 products_description pd ON p.products_id = pd.products_id AND pd.language_id = '1' 左连接精选 f ON p.products_id = f.products_id WHERE p.products_status = '1' AND f.status = '1' order by rand(12852) DESC 限制 12

[TEP 停止]

【问题讨论】:

  • 也许您的本地机器上有不同版本的 MySQL 服务器?
  • 在生成的语句中,FROM 之前没有空格。尝试在它之前添加一个空格。

标签: mysql sql


【解决方案1】:

我不知道查询会如何按书面形式工作。第一个字符串是:

'SELECT p.products_id, p.products_image, p.products_tax_class_id, p.products_ordered, IF (s.status, s.specials_new_products_price, NULL) AS specials_new_products_price, p.products_price, pd.products_name, p.products_model'

那么第二个是以下之一:

'FROM ' . TABLE_SPECIALS . ' s LEFT JOIN ' . TABLE_PRODUCTS . ' p ON s.products_id = p.products_id '

'FROM ' . TABLE_PRODUCTS . ' p LEFT JOIN ' . TABLE_SPECIALS . ' s ON p.products_id = s.products_id '

在这两种情况下,select 列表如下所示:

'p.process_modelFROM '

我怀疑这是表格中的一列。而且我怀疑该查询也缺少from 子句。

将空格放回select 行的末尾,查询应该可以工作。

您遇到的特定错误发生在编译器的第一次传递期间。它正在查找关键字left join,但它们不在from 子句中。

【讨论】:

    猜你喜欢
    • 2020-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多