David
David

Reputation: 15

cURL POST, while

I want this piece of code below to select 2 rows of data from a mysql table and POST the data to a URL.

$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 **/ 
}

It fails with an 'PHP Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in...' error.

This usually means that there is an error with the query but, the below code works with that query. So, it must be something in the while loop breaking it but, I cannot work out what.

// 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);
    }
}

Upvotes: 0

Views: 223

Answers (1)

Explosion Pills
Explosion Pills

Reputation: 191749

You overwrite $result inside the while loop

$result = curl_exec($curl_connection);

I'm not sure why since you don't seem to use it. Just curl_exec is enough.

Upvotes: 3

Related Questions