【问题标题】:Strange MYSQL Errors奇怪的 MYSQL 错误
【发布时间】:2011-07-22 03:00:05
【问题描述】:

我在文件中的查询在 php 文件中如下所示:

SELECT
            p.products_id as v_products_id,
            p.products_model as v_products_model,
            p.products_image as v_products_image,
            p.products_price as v_products_price,
            p.products_sku as v_products_sku,
            p.products_upc as v_products_upc,
            p.products_weight as v_products_weight,
            p.products_date_added as v_date_added,
            p.products_date_available as v_date_avail,
            p.products_tax_class_id as v_tax_class_id,
            p.products_quantity as v_products_quantity,
            p.manufacturers_id as v_manufacturers_id,
            subc.categories_id as v_categories_id
            FROM
            zen_products as p,
            zen_categories as subc,
            zen_products_to_categories as ptoc
            WHERE
            p.products_id = ptoc.products_id AND
            p.products_model = 'M150XN05' AND
            ptoc.categories_id = subc.categories_id

我收到一个错误返回: MySQL 错误 1054:“字段列表”中的未知列“p.produc1925ts_tax_class_id” 执行时:

SELECT
            p.products_id as v_products_id,
            p.products_model as v_products_model,
            p.products_image as v_products_image,
            p.products_price as v_products_price,
            p.products_sku as v_products_sku,
            p.products_upc as v_products_upc,
            p.products_weight as v_products_weight,
            p.products_date_added as v_date_added,
            p.products_date_available as v_date_avail,
                    -- extra 1925 here
            p.produc1925ts_tax_class_id as v_tax_class_id,
            p.products_quantity as v_products_quantity,
            p.manufacturers_id as v_manufacturers_id,
            subc.categories_id as v_categories_id
            FROM
            zen_products as p,
            zen_categories as subc,
            zen_products_to_categories as ptoc
            WHERE
            p.products_id = ptoc.products_id AND
            p.products_model = 'M150XN05' AND
            ptoc.categories_id = subc.categories_id

怎么回事? 额外的“1925”如何放置在选择的中间?我很茫然,我已经尝试了所有我能想到的可能导致这种情况的方法。

完整的代码在这里http://pastebin.com/embed_iframe.php?i=Q2RHT00W

【问题讨论】:

  • 你能发布你的实际代码吗?
  • 你的ep_query函数呢?
  • 这听起来很愚蠢,但请尝试删除该行并重写它(手动)。类似的事情也发生在我身上,我的文本编辑器没有显示一些随机的 unicode 字符,但是却弄乱了代码。值得一试。
  • 按照 Christian 的建议,尝试删除并重新输入。您的编辑器未显示的文本中可能有 U+1925 字符或类似字符。
  • @rabudde,查询中的 cmets 可以与原生 MySQL 扩展配合使用。

标签: php mysql sql mysql-error-1054


【解决方案1】:

MySQL 不会像您期望的那样解析隐式连接。

(引用已删除,因为它是错误的段落,但这是我之前遇到过的已知错误!)

为避免混淆,我建议改用显式连接:

zen_products as p,
zen_categories as subc,
zen_products_to_categories as ptoc
WHERE
p.products_id = ptoc.products_id AND
p.products_model = 'M150XN05' AND
ptoc.categories_id = subc.categories_id

变成

zen_products as p
JOIN zen_products_to_categories as ptoc
    ON p.products_id = ptoc.products_id
JOIN zen_categories as subc
    ON ptoc.categories_id = subc.categories_id
WHERE p.products_model = 'M150XN05'

【讨论】:

  • 我不知道使用显式连接语法是否有助于解决这个问题,但在我看来,您找到的“解释”绝对无关紧要。您引用的摘录是关于在一个查询中混合隐式和显式连接,这里不是这种情况。
  • 啊,对不起。我抓住了错误的段落。不过,我确信我的诊断和解决方案是正确的,因为两周前我遇到了完全相同的问题!现在将删除报价并稍后添加正确的报价。
猜你喜欢
  • 2010-12-24
  • 2013-09-03
  • 2016-05-28
  • 2011-08-17
  • 2023-03-14
  • 1970-01-01
  • 2013-01-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多