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

时间:2016-02-24 07:42:56

标签: php mysql

我正在尝试在我的本地计算机上运行遗留的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   

修改

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

2 个答案:

答案 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视为数据库名称。