我正在尝试在本地计算机上运行一个旧的 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
视为数据库名。