解决Ecshop网站迁移后出现Unknown column ‘****’ in ‘where clause’ 20

2016-07-07 15:13 来源:www.chinab4c.com 作者:ecshop专家

Echop是一款非常不错的网店开源程序,它的用户面量很大,今天在帮一个用户迁移的时候出现了一个很不常见的错误,“MySQL server error report:Array…..” 详细如下:
问题现象
网站在迁移后,访问后台正常,访问首页出现如下报错。数据库保证没有缺少。
  1. MySQL server error report:Array ( [0] => Array ( [message] => MySQL Query Error )
  2. [1] => Array ( [sql] => SELECT c.cat_id, c.cat_name, c.sort_order, a.article_id,
  3. a.title, a.file_url, a.open_type FROM `s5jg****_data`.`teashop_article` AS a LEFT
  4. JOIN `s5jgj****_data`.`teashop_article_cat` AS c ON a.cat_id = c.cat_id WHERE
  5. c.cat_type = 5 AND a.is_open = 1 AND C.cat_id != 14 ORDER BY c.sort_order ASC,
  6. a.article_id ) [2] => Array ( [error] => Unknown column 'C.cat_id' in 'where clause' )
  7. [3] => Array ( [errno] => 1054 ) )
复制代码

现象分析
一般情况下,我们的网站报Unknown column ‘****’ in ‘where clause’我们开始都会想到,是不是网站在迁移的过程中,数据库出现了丢失。在重新下载数据库,导入之后。可以完全确定数据库是没问题的。那么,这会是什么问题呢。小编在查询相关资料后,总结出现以上问题主要有以下几个方面:
1、teashop_article表中确实缺少这个列。
2、teashop_article 表前面多了一个小的可以忽略的空格,没有看到。
3、php中的sql字符串,字段变量或者关键字用的双引号。比如:WHERE products_id = “test”,将test旁边的双引号,改成单引号就可以。
4、linux主机对文件名大小写比较敏感,PHP程序中,或者数据库的列名是大写。
问题解决
明白了是什么原因造成,问题就很容易解决了。我们仔细看一下上面的那个错误提示,发现“Unknown column ‘C.cat_id’ in ‘where clause’”里的列名里的C是大写的,而无忧主机的php虚拟主机是纯正是linux系统,所以可以肯定是因为用户修改了自己的程序,语句中编写不规范导致。我们把用户修改过的文字main.php替换为安装包中默认文件就解决问题了 。

本文地址:http://www.51php.com/ecshop/9665.html喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

回答:
教程出来汤圆

你这个是字段不对。

这个字段有问题啊。

过来了解一下 以后遇到可以解决一下 收藏一下!

把恢复的数据库。直接拷贝进去就可以了。就统一了



他这个明显是程序代码中“字母大小写”的问题,把 c.cat_id 写成了C.cat_id 才导致错误的,楼主自己已经总结出来了。

这是楼主自己的“总结帖”,不是“提问帖”,你们要看清楚。

总结哈哈。。

这个问题不太清楚,帮你顶。





www.zgfzr.cn

学习学习