我正在尝试在我的本地计算机上运行遗留的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
修改
当上面的大型查询在他们的实时服务器上运行时,它会以某种方式工作,可能是因为他们如何在信息模式中设置点符号?当我在本地运行它时,我得到上面的错误。问题似乎是代码是在允许点表示法访问列和字段的系统上编写的?我知道我不在自己的深度,并欣赏持续的投入。
答案 0 :(得分:2)
错误使用反引号,应该是:
SELECT * FROM `content_page`.`site_id` WHERE 1
其他的话,MySQL正在寻找不存在的表content_page.site_id
。
答案 1 :(得分:-1)
第一个查询按预期工作,因为它是从表中查询。
第二个查询未通过AS EXPECTED,因为它尝试从列进行查询。
var rezult = "0";
var numberJoin = [];
function skaicius(symbol) {
numberJoin.push(symbol);
secondTolast = numberJoin[numberJoin.length - 2];
lastNumber = numberJoin[numberJoin.length - 1];
symbolswithoutComma = numberJoin.toString();
atsakymas = symbolswithoutComma.replace(/,/g, "");
atsakymas = atsakymas.replace(/comma/g, ",");
if (numberJoin[0] === "x" || numberJoin[0] === "+") {
numberJoin = [];
} else if ((symbol === "x" || symbol === "+" || symbol === "-") && (secondTolast === "x" || secondTolast === "+" || secondTolast === "-")) {
numberJoin.splice(numberJoin.length - 2, numberJoin.length - 1);
numberJoin.push(symbol);
} else if (symbol === "delete") {
numberJoin = [];
rezult = "0";
document.getElementById("rezult").innerHTML = rezult;
} else if (symbol === "=") {
} else {
document.getElementById("rezult").innerHTML = atsakymas;
}
}
它会将SELECT * FROM `table`.`column_name`
视为表名,同时将column_name
视为数据库名称。