views:

222

answers:

1

I want to store basic user info like name and proxied email into my MySQL database. Here's my code

$facebook = new Facebook($appapikey, $appsecret);
$user = $facebook->require_login($required_permissions = 'publish_stream','status_update','email');

$con = mysql_connect("xxxx","xxxxx","xxxxx");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("xxx_userdb", $con);
//Uptil Here it is working fine...No problem with db connection

$fql_firstname = "select first_name from user where uid = '$user'";
$fql_lastname = "select last_name from user where uid = '$user'";
$fql_email = "select proxied_email from user where uid = '$user'";


$fql_fname_result = $facebook->api_client->fql_query($fql_firstname);
$fql_lname_result = $facebook->api_client->fql_query($fql_lastname);
$fql_email_result = $facebook->api_client->fql_query($fql_email);

echo "<pre>FQL Result:" . print_r($fql_fname_result,true) . "</pre>";
echo "<pre>FQL Result:" . print_r($fql_lname_result,true) . "</pre>";
echo "<pre>FQL Result:" . print_r($fql_email_result,true) . "</pre>";

Here's the output I get

FQL Result:

FQL Result:

FQL Result:

What am I doing wrong?

+1  A: 

From my investigation, here is what I think might be your problem.

In Facebook API uid is int and not a string so your FQL should be specifying a uid of int (but you applied it as a string).

Change

$fql_firstname = "select first_name from user where uid = '$user'";
$fql_lastname = "select last_name from user where uid = '$user'";
$fql_email = "select proxied_email from user where uid = '$user'";

To

$fql_firstname = "select first_name from user where uid = $user";
$fql_lastname = "select last_name from user where uid = $user";
$fql_email = "select proxied_email from user where uid = $user";

I hope $user returns the uid.


Observation update

Also, calling fql_query returns an array of data, so (just in case) why don't you try (not really sure if I'm correct in PHP)

echo "<pre>FQL Result:" . print_r($fql_fname_result[0],true) . "</pre>";
echo "<pre>FQL Result:" . print_r($fql_lname_result[0],true) . "</pre>";
echo "<pre>FQL Result:" . print_r($fql_email_result[0],true) . "</pre>";
The Elite Gentleman
Yes $user return the uid....I had also thought about this ...but unfortunately this doesn't help..
Bruce
Observation update didn't help either
Bruce
Then I'm all out of options. Your code looks correct in all respect. Sorry!
The Elite Gentleman
Do I need to use an XML parser like cUrl?...Did this code work for you?
Bruce
I do the same on Java, and it's basically the same workflow.
The Elite Gentleman