0

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

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

谢谢!

4

1 回答 1

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\")");
于 2013-02-13T22:51:39.257 回答