1

我最近将我的网站上传到了我的托管服务提供商,但我遇到了一个非常奇怪的错误。

我已将与在本地计算机上使用的完全相同的数据库导入到 Web 主机,它告诉我:

警告:PDOStatement::execute(): SQLSTATE[42S22]: 未找到列:1054 /home/users/xxxxx/html/caketopper.co.uk/public_html/models 中的“字段列表”中的未知列“toppers_types.urlPath” /GalleryModel.php 第 32 行

奇怪的是,该列确实存在,而且我 100% 连接到正确的数据库。

这是有关的SQL:

SELECT toppers.name, toppers.urlName, md.description, toppers_images.thumbSrc,
toppers_types.urlPath
FROM toppers_images, toppers_types, toppers
LEFT JOIN meta_descriptions AS md ON md.topperId = toppers.id
WHERE toppers_images.topperId = toppers.id
AND toppers_types.id = toppers.typeId
AND isPrimary = 1

如果我将该 SQL 放入 webhost 上的 phpmyadmin 中,查询将按预期运行并得到结果。

我正在使用 PDO 执行查询:

$r = $this->db->prepare($SQL) ;
$r->execute($PDOParams) ;
return $r->fetchAll(PDO::FETCH_OBJ) ;

有没有人遇到过这样的异常?如果是这样,我该如何解决?

4

1 回答 1

1

Stackoverflow 上有很多此类问题,几乎所有问题都以相同的方式结束:
- 哦,我忘了更新实际的数据库(重命名字段,保存正确的文件等)

字母大小写也可能存在问题(Unix 版本区分大小写,而 Windows 版本不区分大小写)。
无论如何 - 只是测试一切。

使用 PDO 运行此查询并查看结果。

SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'toppers_types'

如果字段不存在 - 检查服务器凭据,
如果存在 - 将其名称复制粘贴到查询中

于 2013-01-13T21:07:13.557 回答