如何从Facebook写一个名字到MySQL?

时间:2013-02-13 22:43:01

标签: php mysql facebook api

我正在尝试运行以下代码:

mysql_query("INSERT INTO friend_data (UID, Name) VALUES ($friendUID, $friendName)");

其中$ friendUID是从Facebook抓取的用户ID,$ friendName是从Facebook抓取的朋友的名字。出于某种原因,$ friendName只是不会写入MySQL。 $ friendUID写得很好,常规文本也写得很好。有没有人知道为什么,或如何让这个工作?相关代码如下:

$uid = $facebook->getUser();
$friends = $facebook->api('/me/friends');
$friendUID = $value["id"];
$friendName = $value["name"];
echo $friendName;
mysql_query("INSERT INTO friend_data (UID, Name) VALUES ($friendUID, $friendName)");

谢谢!

1 个答案:

答案 0 :(得分:2)

首先,您应该考虑使用MySQLi或PDO,因为PHP MySQL扩展已经很久了(现在已经在PHP5.5中弃用)了 http://www.php.net/manual/en/mysqlinfo.api.choosing.php

问题是您正在尝试将原始文本插入SQL查询中,除了注入风险之外,还会导致无效的语句:

期望的结果:

INSERT INTO friend_data (UID, Name) VALUES (1234, "Friend Name");

实际结果:

INSERT INTO friend_data (UID, Name) VALUES (1234, Friend Name);

您需要将名称值封装在引号中,并在插入之前转义值:

$uid = $facebook->getUser();
$friends = $facebook->api('/me/friends');
$friendUID = mysql_real_escape_string($value["id"]);
$friendName = mysql_real_escape_string($value["name"]);
mysql_query("INSERT INTO friend_data (UID, Name) VALUES ($friendUID, \"$friendName\")");