我最近将我的网站上传到我的托管服务提供商,我收到了一个非常奇怪的错误。
我已将我在本地计算机上使用的完全相同的数据库导入到Web主机,它告诉我:
警告:PDOStatement :: execute():SQLSTATE [42S22]:找不到列: 1054'字段列表'中的未知列'toppers_types.urlPath' /home/users/xxxxx/html/caketopper.co.uk/public_html/models/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) ;
有没有人遇到过这样的异常?如果有,我该如何解决?
答案 0 :(得分:1)
Stackoverflow上有很多这类问题,几乎所有问题都以同样的方式结束:
- 哦,我忘了更新实际的数据库(重命名字段,保存正确的文件等)。
字母案例也可能存在问题(Unix版本区分大小写,而Windows版本则不区分) 无论如何 - 只测试一切。
使用PDO运行此查询并查看结果。
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'toppers_types'
如果字段不存在 - 请检查服务器凭据等 如果存在 - 将其名称复制粘贴到查询