2013-04-02 38 views
0

我希望下面這段代碼從mysql表中選擇2行數據並將數據發佈到URL。cURL POST,而

$qry = "SELECT id,email,forename,surname,ipaddress,optin_date,optin_url FROM $db_tble ORDER BY id ASC LIMIT 2"; 
$result = mysql_query($qry); 
$num = mysql_num_rows($result); 

if($result) 
{ 
$OK = 1; 
/** start feed **/ 

//create array of data to be posted 

while ($row = mysql_fetch_assoc($result)) 
{ 
// unset($post_items,$curl_connection,$result,$var,$info); 
$n++; 

$qry_id = $row["id"]; 
$post_data['u'] = $testfeed_user; 

$post_data['p'] = $testfeed_pswd; 

// Action data 
$post_data['email'] = $row["email"]; 

$post_data['fname'] = $row["forename"]; 

$post_data['lname'] = $row["surname"]; 

$post_data['ip'] = $row["ipaddress"];    

$post_data['date'] = $row["optin_date"]; 

$post_data['url'] = $row["optin_url"]; 

//traverse array and prepare data for posting (key1=value1) 

foreach ($post_data as $key => $value) { 
             $post_items[] = $key . '=' . $value; 

    } 

//create the final string to be posted using implode() 

$post_string = implode ('&', $post_items); 



//create cURL connection 

$curl_connection = curl_init($post_url); 


    //set options 

// HTTP request method defaults to GET 
    curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30); 

    curl_setopt($curl_connection, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"); 

    curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true); 

    curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false); 

    curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1); 

    curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, 1); 


//set data to be posted 

curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string); 



     //perform our request 

    $result = curl_exec($curl_connection); 


    //close the connection 

curl_close($curl_connection); 
unset($post_string); 
    unset($post_data); 
unset($post_items); 
/** end feed **/ 
} 

它失敗,'PHP警告:mysql_fetch_assoc():提供的參數不是有效的MySQL結果資源在...'錯誤。

這通常意味着查詢出現錯誤,但下面的代碼適用於該查詢。所以,它必須是在while循環中打破它的東西,但是,我無法弄清楚什麼。

// echo "Select OK!"; 
$qry = "SELECT id,email,forename,surname,ipaddress,optin_date,optin_url FROM $db_tble ORDER BY id ASC LIMIT 2"; 
$result = mysql_query($qry); 
$num = mysql_num_rows($result); 

if (mysql_num_rows($result) != 0) 
{ 
    $OK = 1; 
    /** start feed **/ 

    //create array of data to be posted 

    // $post_data['u'] = $testfeed_user; 

    // $post_data['p'] = $testfeed_pswd; 

    while ($row = mysql_fetch_assoc($result)) 
    { 
     $qry_id = $row["id"]; 
     $post_data['u'] = $testfeed_user; 

     $post_data['p'] = $testfeed_pswd; 

       // Action data 
     $post_data['email'] = $row["email"]; 

     $post_data['fname'] = $row["forename"]; 

     $post_data['lname'] = $row["surname"]; 

     $post_data['ip'] = $row["ipaddress"];    

     $post_data['date'] = $row["optin_date"]; 
     $post_data['url'] = $row["optin_url 



      //traverse array and prepare data for posting (key1=value1) 

     foreach ($post_data as $key => $value) { 

      $post_items[] = $key . '=' . $value; 
        } 



     //create the final string to be posted using implode() 

     $post_string = implode ('&', $post_items); 



     echo "id=" . $qry_id . " - " . $post_string . "<br /<br />"; 
     unset($post_items); 
    } 
} 

回答

3

您覆蓋$resultwhile

$result = curl_exec($curl_connection); 

我不知道爲什麼,因爲你似乎沒有使用它裏面。只需curl_exec就夠了。

+0

謝謝,那就是問題所在。愚蠢的是,我爲了另一個目的而重新使用變量$ result來錯誤地陷入URL,HTTP響應和HTML內容的潛在問題。即從網站獲取「確定」。 – David