2012-04-23 14 views
1

私はconstant..Hereを返すこの機能を持っているが私のクラスや関数である。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()); 
} 

私は2つのエラーを取得:

Notice: Use of undefined constant ROBOTS_NOINDEX_NOFOLLOW - assumed 'ROBOTS_NOINDEX_NOFOLLOW' in C:\Program Files (x86)\Zend\Apache2\htdocs\backlinks\cron\Backlinks.php on line 78 Unknown column 'ROBOTS_NOINDEX_NOFOLLOW' in 'field list'

一つは、一定のは、私はなぜ理解しないdefined..whichされていないとの問題です。 2番目の問題は、定数を列として解釈するsql..whichですか?

なぜ、それを修正するのですか?

答えて

2

あなたは定数を参照するために「自己」を使用する必要があります。

リターン自己:: ROBOTS_NOINDEX_NOFOLLOW

そうでない場合は、PHPにも中かかわらず、グローバルスコープで定数を見つけるためにしようとするだろうあなたの場合、これはクラス定数です。

+0

非常に良い点です。バグを修正したと思います –

+0

'$ error'としてfalseを渡すと、SQLコードにエラーが発生するため、' robotsNoIndexNoFollow'から 'false'ではなく' false'を返すことを検討する必要があります私は信じています) –

+0

私が思うように世話をするif(!$ error)の条件はすでにあります – Saad

3

MySQLが定数の代わりにデータとして認識するためには、文字列の周りにqoutesが必要です。試してみてください:

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

私は2番目のエラーが異なる場合、両方のerrors..again.This時間を取得:不適切な整数値を:以下に述べる1人のユーザーとして行1 –

+0

の列「scan_status」の「ROBOTS_NOINDEX_NOFOLLOW」: 「あなたは 『自己』を使用する必要があります return self :: ROBOTS_NOINDEX_NOFOLLOW " – Husman

+0

また、scan_statusフィールドはどのデータ型ですか?それはvarcharか整数ですか? – Husman

関連する問題