我尝试使用Magento主题,当我导入主题数据时,我收到一条sql错误,上面写着
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2, query was:
SELECT `#__cms_page`.*
FROM `#__cms_page`
INNER JOIN `#__cms_page_store` AS `cms_page_store`
ON #__cms_page.page_id = cms_page_store.page_id
WHERE (`#__cms_page`.`identifier`='home-demo-01')
AND (is_active = 1)
AND (cms_page_store.store_id IN (0, 1))
ORDER BY `cms_page_store`.`store_id` DESC
LIMIT 1
我似乎无法找到问题,因为它说语法错误几乎没有。
答案 0 :(得分:1)
您尚未转义ON子句中的标识符引用。
即。你在这里缺少反引号:
ON #__cms_page .page_id = cms_page_store.page_id
^ ^
如果我们要转义标识符,我们更愿意始终。我的偏好是为表分配一个简短的别名。此外,对is_active
的引用应该是合格的......哪个表来自哪个列?
我倾向于像这样编写查询,并且只转义实际需要转义的标识符:
SELECT p.*
FROM `#__cms_page` p
JOIN `#__cms_page_store` s
ON s.page_id = p.page_id
WHERE ( p.identifier = 'home-demo-01' )
AND ( p.is_active = 1 )
AND ( s.store_id IN (0, 1) )
ORDER BY s.store_id DESC
LIMIT 1
如果我要逃避不需要转义的标识符,我会将所有包含在反引号中,无处不在。