2012-05-30 132 views
0

我想將亞馬遜API集成到我的網站,到目前爲止我已經設法讓它導航到正確的XML部分和存儲作爲一個變量,但我現在試圖插入這個varibable到我的mysql數據庫而它給我這個錯誤未定義的變量錯誤

注意:未定義的變量:sql_select中在 致命錯誤:調用一個成員函數查詢()非對象

什麼我做錯了嗎?

整個代碼

define('INCLUDED', 1); 
error_reporting(E_ALL); 
ini_set("display_errors", 1); 
$AWS_ACCESS_KEY_ID = "HIDDENFORPRIVACY"; 
$AWS_SECRET_ACCESS_KEY = "HIDDENFORPRIVACY"; 

$base_url = "http://free.apisigning.com/onca/xml?"; 
$url_params = array('Operation'=>"ItemLookup",'Service'=>"AWSECommerceService", 
'AWSAccessKeyId'=>$AWS_ACCESS_KEY_ID,'AssociateTag'=>"HIDDENFORPRIVACY", 
'Version'=>"2011-08-01",'Availability'=>"Available",'ItemId'=>"0273702440", 
'ItemPage'=>"1",'ResponseGroup'=>"EditorialReview", 'Title'=>"Accounting and Finance for Non-Specialists 5th Edition"); 

// Add the Timestamp 
$url_params['Timestamp'] = gmdate("Y-m-d\TH:i:s.\\0\\0\\0\\Z", time()); 

// Sort the URL parameters 
$url_parts = array(); 
foreach(array_keys($url_params) as $key) 
    $url_parts[] = $key."=".$url_params[$key]; 
sort($url_parts); 

// Construct the string to sign 
//$string_to_sign = "GET\nhttp://free.apisigning.com/".implode("&",$url_parts); 
//$string_to_sign = str_replace('+','%20',$string_to_sign); 
//$string_to_sign = str_replace(':','%3A',$string_to_sign); 
//$string_to_sign = str_replace(';',urlencode(';'),$string_to_sign); 

// Sign the request 
//$signature = hash_hmac("sha256",$string_to_sign,$AWS_SECRET_ACCESS_KEY,TRUE); 

// Base64 encode the signature and make it URL safe 
//$signature = base64_encode($signature); 
//$signature = str_replace('+','%2B',$signature); 
//$signature = str_replace('=','%3D',$signature); 
//$signature = str_replace(';',urlencode(';'),$string_to_sign); 
$url_string = implode("&",$url_parts); 
$url = $base_url.$url_string; 
//print $url; 


$ch = curl_init();     //this part we set up curl 
curl_setopt($ch, CURLOPT_URL,$url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_TIMEOUT, 15); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
$xml_response = curl_exec($ch); 
curl_close($ch); 
header('Content-type: application/xml'); //specify as xml to not display as one long string 
echo $xml_response; 

$xml = new SimpleXMLElement($xml_response); //time to echo back the correct piece of data 

$editorialReview = $xml->Items->Item->EditorialReviews->EditorialReview->Content; 

$variable = '<p>Editorial review: '.html_entity_decode($editorialReview).'</p>'."\n"; 
echo $variable; 

$sql_select = mysql_query("INSERT INTO " . DB_PREFIX . "auctions 
      (amazon_description) VALUES 
      ('" . $variable . "')"); 
      echo ($sql_select); 

這不發送錯誤,但MySQL數據庫顯示沒有變化

+1

什麼是$ sql_select?它來自哪裏?你的代碼沒有顯示。 –

+0

試試這個:$ sql_select-> query(「INSERT INTO {DB_PREFIX} auctions(amazon_description)VALUES('{$ variable}')」); – B4NZ41

+0

尼斯[SQL注入](http://bobby-tables.com)洞... –

回答

1

錯誤「未定義變量」表示你還沒有初始化的對象。

從您打印的代碼看來,$ sql_select 應該是是一個具有select語句的字符串。

所以,你需要做的是這樣的:

$variable = '<p>Editorial review: '.html_entity_decode($editorialReview).'</p>'."\n"; 
echo $variable; 

$sql_select .= "INSERT INTO " . DB_PREFIX . "auctions 
      (amazon_description) VALUES 
      ('" . $variable . "')"; 

$DB_object->query($sql_select); 

請張貼整個代碼,使該解決方案可以準確地發現了。

+0

爲什麼'。='幫助這裏? – Ben

+0

因爲我不確定整個代碼,並且可能有預先的SQL註釋並且暗示其他先前的SQL語句要批量執行。 –

+0

@JackBrown我已編輯我的帖子,包括整個代碼,當前的代碼不會產生錯誤,但mysql數據庫不會正確更新 –