2012-11-14 5 views
-3

У меня есть класс, который выводит веб-сайт рангфункция Вставить класс в MySQL

$urlInfo->getUrlInfo(); 

Это является амазонки AWS Alexa для ранга. выход будет ранг домена. Мне нужно вставить ранг в db, но я не могу, если не установить его в переменную.

Что мне делать?

я попробовал:

mysql_query("INSERT INTO rank (date, domain, rank) VALUES ('$date','$domain','".$urlInfo->getUrlInfo()."')") 

но ранг пуст.

это то, что функция geturlinfo выглядит

public function getUrlInfo() { 
    $queryParams = $this->buildQueryParams(); 
    $sig = $this->generateSignature($queryParams); 
    $url = 'http://' . self::$ServiceHost . '/?' . $queryParams . 
     '&Signature=' . $sig; 
    $ret = self::makeRequest($url); 
    //echo "\nResults for " . $this->site .":\n\n <br>"; 
    self::parseResponse($ret); 
} 

сценарий затем определяет массив функции в качестве результата

 public static function parseResponse($response) { 
     $xml = new SimpleXMLElement($response,null,false, 
            'http://awis.amazonaws.com/doc/2005-07-11'); 
     if($xml->count() && $xml->Response->TrafficHistoryResult->Alexa->count()) { 
      $info = $xml->Response->TrafficHistoryResult->Alexa; 
      $nice_array = array(

//     'City'   => $info->ContactInfo->PhysicalAddress->City, 
//     'State'   => $info->ContactInfo->PhysicalAddress->State, 
//     'Postal Code' => $info->ContactInfo->PhysicalAddress->PostalCode, 
//     'Country'  => $info->ContactInfo->PhysicalAddress->Country, 
//     'Links In Count' => $info->ContentData->LinksInCount, 
//     'Rank'   => $info->TrafficData->Rank, 
//     'Usage'   => $info->TrafficData->UsageStatistics 
        'Rank'   => $info->TrafficHistory->HistoricalData->Data->Rank 

      ); 
     } 

        foreach($nice_array as $k => $v) 
        { 
         echo $k.': ' . $v ."\n <br>"; 
        } 

    } 

UPDATE: Это работает. я сейчас нахожусь в состоянии поставить его в HREF = XX, но все обновления для MySQL отображаются пробелы

$accessKeyId1 = "XXX"; 
    $secretAccessKey1 = "XXX"; 
    $site1 = $_GET['domain']; 
    $StartNum1 = $_GET['currentdate']; 

    //$url = $urlInfo->getUrlInfo(); 
    //echo "URL : ".$url; 

    function Rank($accessKeyId, $secretAccessKey, $site, $StartNum) 
    {$urlInfo = new UrlInfo($accessKeyId, $secretAccessKey, $site, $StartNum); $urlInfo->getUrlInfo();} 
    echo "test url:<a href='/"; 
    $test = Rank($accessKeyId1, $secretAccessKey1, $site1, $StartNum1); 

    //$testing = mysql_query("UPDATE rank SET rank = '".Rank($accessKeyId1, $secretAccessKey1, $site1, $StartNum1)."' WHERE domain = '4shared.com'") or die(mysql_error()); 
echo $test."'>test</a>"; 

для UPDATE я попытался ранг ($ accessKeyId1, $ secretAccessKey1, $ site1, $ StartNum1), а также $ испытаний.

любые идеи отсюда?

+0

Что ваш SQL-запрос? Вам не нужно назначать его переменной – emartel

+1

Возможно, вам захочется добавить сведения о вашей функции getUrlInfo, а также о том, как вы пытаетесь добавить ее в базу данных и какова фактическая ошибка. – andrewsi

+0

Использует ли 'urlInfo-> getUrlInfo()' echo в браузере?Если это так, вам нужно изменить функцию класса. Если нет, вы можете просто использовать эту функцию как часть вашего запроса ... '" INSERT INTO table (col1, col2) VALUES ('". $ UrlInfo-> getUrlInfo()."', 'Var2'); "' –

ответ

1

Try, вместо того, чтобы $urlinfo->geturlinfo() сделать еще нацелено о вышеназванном что-то вроде $url = $urlinfo->geturlinfo(), то в заявлении поставил '$url' так:

mysql_query("INSERT INTO rank (date, domain, rank) VALUES ('$date','$domain','$url')"); 

я думаю, что главная проблема, которую вы имеете в кавычках, это расщепление заявление на две части, что означает, что заявление не является полным (не цитируйте меня по этому вопросу)

Наконец, у вас на самом деле есть таблица под названием rank? потому что это звучит так, будто вы называете его столбцом/строкой.

Я только работаю через мой собственный мыслительный процесс, я надеюсь, что это работает/помогает =]


в комментариях я говорил, что вы должны сделать, это this->

$rank = $this->url->getNewValue(); 
$url = $this->$rank->getUrlInfo(); 

mysql_query("INSERT INTO rank (date, domain, rank) VALUES ('$date','$domain','$url')"); 



Хотя я бы взглянуть на ссылку ниже о SQL Injection это поможет защитить ваше приложение от хакеров.

SQL Injection: Information
SQL Injection: Prevention

+0

благодарит за ответ. Я пробовал почти все. Я определил его, как вы сказали, и все же он выводит пустым. единственный раз, когда он выводит ранг, я использую $ urlinfo-> geturlinfo(). Я пробовал $ urlinfo-> nice_array и $ urlinfo-> parseResponse. Я просто не понимаю, почему он не позволяет мне хранить данные. Я даже не могу поместить его в URL-адрес, так что getUrlInfo()."'>Rank тоже не работает. –

+0

вы можете попробовать с полем ввода, скажем, его названный «URL» «попробуйте это; '$ rank = url-> getNewValue();' then '$ url = $ rank-> geturlinfo()', тогда попробуйте в выражении '$ url' снова. Я пытаюсь записать мой мыслительный процесс, чтобы я не конечно, если это правильно. какой тип столбца вы используете? –

+0

Должен ли я создать функцию в классе, называемом getNewValue? поэтому создайте функции getNewValue() {$ url = $ UrlInfo-> getUrlInfo();}, затем вызовите это? –

Смежные вопросы