MySQL 表不存在,但我可以看到它


MySQL table doesn't exist but I can see it

我正在尝试在本地计算机上运行一个旧的 PHP/mySQL 网站,但我无法让数据库查询正常工作。 如果我只对一个表运行查询,它会得到结果,但如果我要求一列,它会告诉我它不存在。 这是一个有效的示例查询:

SELECT * FROM `content_page` WHERE 1

这是一个告诉我表不存在的查询,尽管我知道它确实存在

SELECT * FROM `content_page.site_id` WHERE 1

同样,这是一个运行 PHP 5.3.1 的旧网站,我想知道我是否不了解 PDO 之类的内容或导出数据库时应该检查的兼容性选项? 原谅我的无知。

编辑:

表查询在使用时有效

SELECT * FROM content_template WHERE id=1

按照建议,但使用反引号返回相同的错误。 我很困惑为什么这段代码可以在他们的实时服务器上工作,但如果语法错误,我的代码会中断?

这是一个完整的查询,其中包含对我不起作用的实时代码:

$sql = "SELECT content_revision.*, content_template.machine_name AS template_name, content_template.id AS content_template_id,
                    content_page.is_sold,
                    content_page.new_home as new_home,
                    content_page.css_classes,
                    site.domain, site.name as site_name, site.id as site_id,
                    site.facebook_url,
                    site.google_url,
                    site.houzz_url,
                    site.blogspot_url,
                    site.youtube_url,
                    site.hours AS site_hours, site.telephone AS site_telephone, site.toll_free_telephone AS site_toll_free_telephone,
                    site.analytics as site_analytics,
                    site.machine_name as site_machine_name,
                IF(content_revision.id IS NOT NULL, CONCAT_WS('/', site.domain, content_revision.url), '') AS `path`
            FROM content_page
            LEFT JOIN content_revision ON content_revision.id = content_page.publish_content_revision_id
            LEFT JOIN content_template ON content_template.id = content_page.content_template_id
            LEFT JOIN site ON site.id = content_page.site_id
            WHERE $url AND content_page.site_id = $site_id";

非常感谢您的帮助

编辑:添加错误消息

这是我使用上述查询时遇到的错误

SELECT * FROM `content_page.site_id`
MySQL Error: Table 'mckeewpb7.content_page.site_id' doesn't exist
Debug:
0:  
file:   
C:'wamp'www'mckee-down3'apps'dblib.php
line:   
290
function:   
db_query
args:   
0:  
SELECT * FROM `content_page.site_id`   
file:   
C:'wamp'www'mckee-down3'apps'ContentPage.php
line:   
223
function:   
db_query_array
args:   
0:  
SELECT * FROM `content_page.site_id`
2:  
file:   
C:'wamp55'www'mckee-down3'index.php
line:   
81
function:   
getPage
class:  
ContentPage   

编辑

当上面的大型查询在他们的实时服务器上运行时,它会以某种方式工作,也许是因为他们如何在信息模式中设置点符号? 当我在本地运行它时,出现上述错误。 问题似乎是代码是在允许点表示法访问列和字段的系统上编写的? 我知道我已经超出了我的深度,并感谢持续的投入。

引号的错误用法,应该是:

SELECT * FROM `content_page`.`site_id` WHERE 1

其他MySQL正在寻找不存在的表content_page.site_id

第一个查询按预期工作,因为它是从表中查询的。

第二个查询按预期失败,因为它尝试从列进行查询。

SELECT * FROM `table`.`column_name`

它将column_name视为表名,而将table视为数据库名。