我正在尝试运行以下代码:
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)");
谢谢!
答案 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\")");