Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将Facebook中的名字写入MySQL?_Php_Mysql_Facebook_Api - Fatal编程技术网

Php 如何将Facebook中的名字写入MySQL?

Php 如何将Facebook中的名字写入MySQL?,php,mysql,facebook,api,Php,Mysql,Facebook,Api,我正在尝试运行以下代码: mysql_query("INSERT INTO friend_data (UID, Name) VALUES ($friendUID, $friendName)"); 其中,$friendUID是从Facebook抓取的用户ID,$friendName是从Facebook抓取的朋友的姓名。出于某种原因,$friendName不会写入MySQL$friendUID写得很好,普通文本也写得很好。有人知道为什么,或者如何让它工作吗?相关代码如下: $uid = $face

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

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)");

谢谢大家!

首先,您应该考虑使用MySQLi或PDO,因为PHP-MySQL扩展非常旧(现在在PHP5.5中不推荐使用)

问题是您试图将原始文本插入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\")");

你好,这里有SQL注入漏洞,请考虑切换到使用MySQLI或PDO来访问数据库(<代码> MySQL<函数是无效的,使用它们是不鼓励的)。再见,谢谢-我来看看。不过我只是想让它工作起来…谢谢!说到PDO和MySQLi——最终我需要在Java小程序中编写语句。我是否也需要修改它们以使其不可注入?@FinalJon是的,SQL注入是一个无论使用何种语言都需要处理的问题。