我正在使用他们的 API 将我的网站与另一个网站集成。从其中一个 API 调用中,我想将响应插入到表中。我正在使用 cURL 来查询他们的 API,并使用 PDO 将其插入到我的 MySQL 数据库中。
以下是相关代码:
// Upload the file to RapidShare
$uploadID = mt_rand(1000000000, 9999999999);
$url = 'http://rs' . $uploadServer . '.rapidshare.com/cgi-bin/rsapi.cgi?uploadid=' . $uploadID;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
$postFields = array('sub' => 'upload',
'login' => 'mylogin',
'password' => 'mypassword',
'uploadid' => $uploadID,
'filename' => $filename,
'filecontent' => '@' . $targetDir . '/' . $id);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
if(!$resp = curl_exec($ch)) {
error('upload call failed');
}
然后,我有一个名为的变量$uploadDetails
,它是 API 响应的数组,其中包含文件的文件 ID、文件名、文件大小和 md5 值。我使用以下查询将文件 ID 插入到我的数据库中:
// Database shinanagans
try {
$dbh = new PDO('mysql:host=localhost;dbname=mytable', 'root', '');
$query = 'INSERT INTO `files` (f_id, s_id, u_id, name, size, uploaded, rs_fileid)
VALUES (?, (SELECT s_id FROM `servers` WHERE name = ? LIMIT 1), (SELECT u_id FROM `users` WHERE username = ?), ?, ?, ?, ?)';
$sth = $dbh->prepare($query);
$sth->execute(array($id, $server, 11, $uploadDetails[1], $uploadDetails[2], date('c'), $uploadDetails[0]));
$dbh = null;
} catch(PDOException $e) {
error($e->getMessage());
}
每个 API 响应都有一个唯一的文件 ID,我确信这一点。而且我知道我从 API 调用中得到了正确且唯一的文件 ID。我已经通过回显响应来验证这一点。但是,出于某种原因,PDO 一直在列下插入此值rs_fileid
:2147483647
.
为澄清起见,以下是 API 调用的示例响应:
Array
(
[0] => 3294575677
[1] => Untitled_1.png
[2] => 478923
[3] => ae83e53e5bf26406715daed0d44adc45
)
这是相关的数据库行:
如您所见,rs_fileid
列的所有字段值都是相同的,但它们应该是唯一的,并且 API 以唯一值响应。
有人知道会发生什么吗?谢谢你。