2011-08-22 8 views
-2

해당 API를 사용하여 Twitter 용 봇을 만들려고합니다. 그것이하는 일은 "mysql select"로 만든 모든 로봇을 가져 와서 각각의 상태를 기록하는 것입니다. 나는이스크립트에서 twitter API를 사용할 때 모든 사용자를 선택할 수 없습니다.

SELECT * FROM tweeterusers WHERE rid='9' 

또는 기타에 다음

SELECT * FROM tweeterusers 

을 변경하고 있다면 모든 로봇을 선택하려고 할 때 작동하지 않는 몇 가지 이유를 들어

, 그것은에만 작동 rid (여기서 rid는 데이터베이스에있는 로봇 ID 임)

내가 잘못 가고있는 곳을 보여 주시겠습니까?

이 전체 코드

<? 
$query = mysql_query("SELECT * FROM tweeterusers") or die(mysql_error()); 
    while($info = mysql_fetch_array($query)) 
     { 
      $rid=$info['rid']; 
      $ConsumerKey=$info['ConsumerKey']; 
      $ConsumerSecret=$info['ConsumerSecret']; 
      $AccessToken=$info['AccessToken']; 
      $AccessTokenSecret=$info['AccessTokenSecret']; 
      $Keyword=$info['Keyword']; 
      $TheTweet=$info['TheTweet']; 
      $Proxy=$info['Proxy']; 

      //echo $rid."<br />"; 
      //echo $Keyword."<br /><br />"; 


      define('CONSUMER_KEY', $ConsumerKey); 
      define('CONSUMER_SECRET', $ConsumerSecret); 
      define('ACCESS_TOKEN', $AccessToken); 
      define('ACCESS_TOKEN_SECRET', $AccessTokenSecret); 

      $twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET); 
      $twitter->host = "http://search.twitter.com/"; 
      //$search = $twitter->get('search', array('q' => $Keyword, 'rpp' => 1)); 


      //proxy body 
      $ch = curl_init(); 
      curl_setopt ($ch, CURLOPT_URL, "https://api.twitter.com/1/"); 
      curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
      curl_setopt ($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP); 
      curl_setopt ($ch, CURLOPT_PROXY,$Proxy); 
      curl_setopt ($ch, CURLOPT_PROXYUSERPWD, '397592562:d6a6cdca'); 
      curl_setopt ($ch, CURLOPT_TIMEOUT, 120); 

      $response = curl_exec ($ch); 


      //$twitter->host = $response; 
      $twitter->host = "https://api.twitter.com/1/"; 

      if(is_int($response)) 
      { 
       die("Errors: " . curl_errno($ch) . " : " . curl_error($ch)); 
      } 
      curl_close ($ch); 


       $status = "hey all"; 

       if(strlen($status) > 140) $status = substr($status, 0, 139); 
       mysql_query("INSERT INTO tweeterstatus 
       (Status, date, time, Robot) VALUES('$status', '$date', '$time', '$rid')"); 

       $twitter->post('statuses/update', array('status' => $status)); 



       echo " 
        <tr style='background:none repeat scroll 0 0 #eae9ff;'> 
        <td align='center'>".$rid."</td> 
        <td align='center'>".$Proxy."</td> 
        <td align='center'>".$Keyword."</td> 
        <td align='center'>".$TheTweet."</td> 
        <td align='center'>".$status."</td> 
       </tr>"; 



      sleep(1); 
     } 

       echo '</table>'; 
      ?> 
+4

제거? –

답변

4

당신은 두 번 이상 define 이상을 사용할 수 없습니다에게 있습니다.

그냥 사용

$twitter = new TwitterOAuth($ConsumerKey, $ConsumerSecret, $AccessToken, $AccessTokenSecret); 

와는 오류가 무엇을 얻고 년대 define

+0

예 !!!! 감사!!! 왜 더 이상 두 번 정의 할 수 없는지 설명 할 수 있습니까? – user906798

+2

나는 이해하지 못한다. 물론'define '을 두 번 이상 호출 할 수 있습니다. 완벽하게 유효한 정의 블록을 생략하면 문제가 어떻게 해결됩니까? 나는 무엇을 놓치고 있는가 ??? –

+0

기술적으로 정의를 두 번 이상 호출 할 수 있지만 첫 번째 호출에서만 값을 설정합니다. 다음 호출에서 false를 반환하고 현재 값을 덮어 쓰지 않습니다. – stewe

관련 문제