Reputation: 15
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
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