Mysql错误:'字段列表'中的未知列'变量'

时间:2012-04-23 07:17:54

标签: php mysql

我有这个函数返回一个常量..这是我的类和函数:

class Backlinks extends GoogleSearch {
const ROBOTS_NOINDEX_NOFOLLOW = 606;

    function robotsNoIndexNoFollow(){
    $crawler = new Connection();
    $curl = $crawler -> setUrl($this->url) ->getDocument();
    if ($curl){
        $html = new simple_html_dom($curl);
        $robots = $html -> find("meta[name=robots]", 0);
        $html -> clear();
        unset ($crawler);
        if ($robots){
            $content = $robots -> getAttribute("content");
            $content = strtolower($content);
            if (substr_count($content, "noindex")){
                return ROBOTS_NOINDEX_NOFOLLOW; 
            }
            if (substr_count($content, "nofollow")){
                return ROBOTS_NOINDEX_NOFOLLOW;
            }
        }
        else{
            return false;
        }
    }

}

上面的问题出现在ROBOTS_NOINDEX_NOFOLLOW contatnt中。 常量作为要在数据库中更新的错误参数进入另一个函数。

public function setStatus($error){
    $status = $error;
    if (!$error){
        $status = 200;
    }
    // only update the pages which weren't already scanned (for historic purposes).
    $query = "UPDATE task_pages tp 
        SET scan_status = $status 
        WHERE page_id = $this->pageID AND scan_status = 0";
    mysql_query($query) or die(mysql_error());
}

我收到两个错误:

  

注意:使用未定义的常量ROBOTS_NOINDEX_NOFOLLOW - 假设   C:\ Program Files中的'ROBOTS_NOINDEX_NOFOLLOW'   第78行的(x86)\ Zend \ Apache2 \ htdocs \ backlinks \ cron \ Backlinks.php   “字段列表”中的未知列“ROBOTS_NOINDEX_NOFOLLOW”

一个是常量未被定义的问题..我不明白为什么。 第二个问题是sql..which将常量解释为一列?!?

为什么以及如何纠正?

2 个答案:

答案 0 :(得分:3)

你需要在字符串周围引用MySQL才能将其识别为数据而不是常量。尝试:

"UPDATE task_pages tp 
        SET scan_status = '$status' 
        WHERE page_id = $this->pageID AND scan_status = 0";

答案 1 :(得分:2)

你需要使用'self'来引用常量:

返回self :: ROBOTS_NOINDEX_NOFOLLOW

否则,PHP会尝试在全局范围内找到常量,即使在你的情况下这是一个类常量。