簡體   English   中英

PDO從API請求中插入相同的字段數據

[英]PDO inserting identical field data from API request

我正在使用他們的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使用唯一值進行響應。

有誰知道會發生什么? 謝謝。

注意, 2147483647是32位有符號整數的最大值 - 並且樣本中的文件ID明顯高於該值。 不確定PHP將如何處理它,因為這取決於你的PHP是32位還是64位(以及它是否難以嘗試和啟動數據),但MySQL會將數字限制在它所使用的字段范圍內進入

檢查以確保您的數據庫列是BIGINT或至少是UNSIGNED INT - 或者,除非您確實需要該列為數字,否則適當長度的VARCHAR字段也可以。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM