2014-02-21 74 views
1

我的代碼是:上mysqli- UNKNOW柱>查詢結果

if (($handle = fopen(self::UPLOAD_PATH . $this->_filename, "r")) !== false) { 
$mysqlCols = array(); 
while (($data = fgetcsv($handle)) !== false) { 
    $num = count($data); 
    for ($c = 0; $c < $num; $c++) { 

     if ($row == 0) { 
      if (md5($data[$c]) == 'c7393c74ae43e690f8bbb78fcc4d9223') { 
       $data[$c] = 'Unique ID'; // Fix due to an issue with wrong characters while reading... 
      } 
      $mysqlCols[$c] = $data[$c]; 
     } else { 
      $mysqlValues[$c] = $mysqli->real_escape_string($data[$c]); 
     } 
    } 

    if ($row > 0) { 
     $query = "INSERT INTO `temporary_datas` (`" . implode('`, `', $mysqlCols) . "`) VALUES ('" . implode("', '", $mysqlValues) . "')"; 
     echo $query . ';<br>'; 
     $result = $mysqli->query($query) or die($mysqli->error); 
     var_dump($result); 
    } 

    $row++; 

    if ($count++ == 3) { 
     break; 
    } 
} 
fclose($handle); 
} else { 
    return false; 
} 

我的表:

CREATE TABLE `temporary_datas` (
    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, 
    `Unique ID` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Conversion Date` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Last Updated` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Click Date` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Affiliate ID` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Affiliate Name` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Advertiser ID` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Advertiser Name` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Offer ID` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Offer Name` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Creative` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Sub ID` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Sub ID 2` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Sub ID 3` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Sub ID 4` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Sub ID 5` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Type` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Paid` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Price Paid Currency` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Received` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Price Received Currency` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Reached Step` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Pixel` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Throttled` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Returned` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Test` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Transaction ID` VARCHAR(50) NOT NULL DEFAULT '0', 
    `IP Address` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Click IP Address` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Country` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Conversion Referrer` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Referrer` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Conversion User Agent` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Click User Agent` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Note` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Approved` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Disposition` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Region` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Language` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Provider Name` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Device` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Operating System` VARCHAR(50) NOT NULL DEFAULT '0', 
    `OS (Major Version)` VARCHAR(50) NOT NULL DEFAULT '0', 
    `OS (Minor Version)` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Browser` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Browser (Major Version)` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Browser (Minor Version)` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Conversion Score` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Paid Unbilled` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Received Unbilled` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Click Request Session ID` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Event Name` VARCHAR(50) NOT NULL DEFAULT '0', 
    `Price Format` VARCHAR(50) NOT NULL DEFAULT '0', 
    PRIMARY KEY (`id`) 
) COLLATE='utf8_general_ci' 
    ENGINE=InnoDB 
    AUTO_INCREMENT=10; 

我的結果是(後續代碼var_dump一個):

INSERT INTO `temporary_datas` (`Unique ID`, `Conversion Date`, `Last Updated`, `Click Date`, `Affiliate ID`, `Affiliate Name`, `Advertiser ID`, `Advertiser Name`, `Offer ID`, `Offer Name`, `Creative`, `Sub ID`, `Sub ID 2`, `Sub ID 3`, `Sub ID 4`, `Sub ID 5`, `Type`, `Paid`, `Price Paid Currency`, `Received`, `Price Received Currency`, `Reached Step`, `Pixel`, `Throttled`, `Returned`, `Test`, `Transaction ID`, `IP Address`, `Click IP Address`, `Country`, `Conversion Referrer`, `Referrer`, `Conversion User Agent`, `Click User Agent`, `Note`, `Approved`, `Disposition`, `Region`, `Language`, `Provider Name`, `Device`, `Operating System`, `OS (Major Version)`, `OS (Minor Version)`, `Browser`, `Browser (Major Version)`, `Browser (Minor Version)`, `Conversion Score`, `Paid Unbilled`, `Received Unbilled`, `Click Request Session ID`, `Event Name`, `Price Format`) VALUES ('1258806', '02/01/2014 2:40:05 PM', '02/01/2014 2:46:22 PM', '02/01/2014 2:28:44 PM', '120958', 'iTap Ads', '163', 'Zinq Media', '3002', '[WAP] Android Clean-up - ES', '37670', '', 'cU2U3A68JPK94J990MAK5QFRKD', '{gclid}', '849d37fa-1c14-466e-87c1-2325c23d073c', '', 'Click', '10.7000', 'USD', '13.3800', 'USD', '1', 'True', 'False', 'False', 'False', '', '95.138.134.110', '46.222.188.248', 'ES', '', 'http://droid-safety.com/sp/scan1/?voluumdata=vid..00000305-cc9e-4715-8000-000000000000__vpid..0c977800-8b73-11e3-8759-c26a9a686c33__caid..c1c24ba3-cbe3-470d-9e8f-192a66242968__lid..849d37fa-1c14-466e-87c1-2325c23d073c__oid1..1ac7589d-b050-4ec2-8e03-3cf386', 'CAKE: (getcake.com): Tracking Service', 'Mozilla/5.0 (Linux; Android 4.3; ka-ge; SAMSUNG GT-I9505 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36', '', 'False', '', 'Madrid', 'GEORGIAN', 'xfera moviles s.a.', '', 'Android', '4', '4.3', 'Chrome', 'Other', '', '0.00', '0.0000', '13.3800', '29699629', '', 'CPA\r'); 

「字段列表」中的未知列'價格格式'

如果我把這個查詢直接通過mysql運行,它工作正常。我不明白什麼是錯的。有任何想法嗎?


int 53 
int 53 
array (size=53) 0 => string 'Unique ID' (length=9) 1 => string 'Conversion Date' (length=15) 2 => string 'Last Updated' (length=12) 3 => string 'Click Date' (length=10) 4 => string 'Affiliate ID' (length=12) 5 => string 'Affiliate Name' (length=14) 6 => string 'Advertiser ID' (length=13) 7 => string 'Advertiser Name' (length=15) 8 => string 'Offer ID' (length=8) 9 => string 'Offer Name' (length=10) 10 => string 'Creative' (length=8) 11 => string 'Sub ID' (length=6) 12 => string 'Sub ID 2' (length=8) 13 => string 'Sub ID 3' (length=8) 14 => string 'Sub ID 4' (length=8) 15 => string 'Sub ID 5' (length=8) 16 => string 'Type' (length=4) 17 => string 'Paid' (length=4) 18 => string 'Price Paid Currency' (length=19) 19 => string 'Received' (length=8) 20 => string 'Price Received Currency' (length=23) 21 => string 'Reached Step' (length=12) 22 => string 'Pixel' (length=5) 23 => string 'Throttled' (length=9) 24 => string 'Returned' (length=8) 25 => string 'Test' (length=4) 26 => string 'Transaction ID' (length=14) 27 => string 'IP Address' (length=10) 28 => string 'Click IP Address' (length=16) 29 => string 'Country' (length=7) 30 => string 'Conversion Referrer' (length=19) 31 => string 'Referrer' (length=8) 32 => string 'Conversion User Agent' (length=21) 33 => string 'Click User Agent' (length=16) 34 => string 'Note' (length=4) 35 => string 'Approved' (length=8) 36 => string 'Disposition' (length=11) 37 => string 'Region' (length=6) 38 => string 'Language' (length=8) 39 => string 'Provider Name' (length=13) 40 => string 'Device' (length=6) 41 => string 'Operating System' (length=16) 42 => string 'OS (Major Version)' (length=18) 43 => string 'OS (Minor Version)' (length=18) 44 => string 'Browser' (length=7) 45 => string 'Browser (Major Version)' (length=23) 46 => string 'Browser (Minor Version)' (length=23) 47 => string 'Conversion Score' (length=16) 48 => string 'Paid Unbilled' (length=13) 49 => string 'Received Unbilled' (length=17) 50 => string 'Click Request Session ID' (length=24) 51 => string 'Event Name' (length=10) 52 => string 'Price Format 
' (length=13) 
array (size=53) 0 => string '1258806' (length=7) 1 => string '02/01/2014 2:40:05 PM' (length=21) 2 => string '02/01/2014 2:46:22 PM' (length=21) 3 => string '02/01/2014 2:28:44 PM' (length=21) 4 => string '120958' (length=6) 5 => string 'iTap Ads' (length=8) 6 => string '163' (length=3) 7 => string 'Zinq Media' (length=10) 8 => string '3002' (length=4) 9 => string '[WAP] Android Clean-up - ES' (length=27) 10 => string '37670' (length=5) 11 => string '' (length=0) 12 => string 'cU2U3A68JPK94J990MAK5QFRKD' (length=26) 13 => string '{gclid}' (length=7) 14 => string '849d37fa-1c14-466e-87c1-2325c23d073c' (length=36) 15 => string '' (length=0) 16 => string 'Click' (length=5) 17 => string '10.7000' (length=7) 18 => string 'USD' (length=3) 19 => string '13.3800' (length=7) 20 => string 'USD' (length=3) 21 => string '1' (length=1) 22 => string 'True' (length=4) 23 => string 'False' (length=5) 24 => string 'False' (length=5) 25 => string 'False' (length=5) 26 => string '' (length=0) 27 => string '95.138.134.110' (length=14) 28 => string '46.222.188.248' (length=14) 29 => string 'ES' (length=2) 30 => string '' (length=0) 31 => string 'http://droid-safety.com/sp/scan1/?voluumdata=vid..00000305-cc9e-4715-8000-000000000000__vpid..0c977800-8b73-11e3-8759-c26a9a686c33__caid..c1c24ba3-cbe3-470d-9e8f-192a66242968__lid..849d37fa-1c14-466e-87c1-2325c23d073c__oid1..1ac7589d-b050-4ec2-8e03-3cf386' (length=255) 32 => string 'CAKE: (getcake.com): Tracking Service' (length=37) 33 => string 'Mozilla/5.0 (Linux; Android 4.3; ka-ge; SAMSUNG GT-I9505 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36' (length=162) 34 => string '' (length=0) 35 => string 'False' (length=5) 36 => string '' (length=0) 37 => string 'Madrid' (length=6) 38 => string 'GEORGIAN' (length=8) 39 => string 'xfera moviles s.a.' (length=18) 40 => string '' (length=0) 41 => string 'Android' (length=7) 42 => string '4' (length=1) 43 => string '4.3' (length=3) 44 => string 'Chrome' (length=6) 45 => string 'Other' (length=5) 46 => string '' (length=0) 47 => string '0.00' (length=4) 48 => string '0.0000' (length=6) 49 => string '13.3800' (length=7) 50 => string '29699629' (length=8) 51 => string '' (length=0) 52 => string 'CPA\r' (length=5) 
INSERT INTO `temporary_datas` (`Unique ID`, `Conversion Date`, `Last Updated`, `Click Date`, `Affiliate ID`, `Affiliate Name`, `Advertiser ID`, `Advertiser Name`, `Offer ID`, `Offer Name`, `Creative`, `Sub ID`, `Sub ID 2`, `Sub ID 3`, `Sub ID 4`, `Sub ID 5`, `Type`, `Paid`, `Price Paid Currency`, `Received`, `Price Received Currency`, `Reached Step`, `Pixel`, `Throttled`, `Returned`, `Test`, `Transaction ID`, `IP Address`, `Click IP Address`, `Country`, `Conversion Referrer`, `Referrer`, `Conversion User Agent`, `Click User Agent`, `Note`, `Approved`, `Disposition`, `Region`, `Language`, `Provider Name`, `Device`, `Operating System`, `OS (Major Version)`, `OS (Minor Version)`, `Browser`, `Browser (Major Version)`, `Browser (Minor Version)`, `Conversion Score`, `Paid Unbilled`, `Received Unbilled`, `Click Request Session ID`, `Event Name`, `Price Format`) VALUES ('1258806', '02/01/2014 2:40:05 PM', '02/01/2014 2:46:22 PM', '02/01/2014 2:28:44 PM', '120958', 'iTap Ads', '163', 'Zinq Media', '3002', '[WAP] Android Clean-up - ES', '37670', '', 'cU2U3A68JPK94J990MAK5QFRKD', '{gclid}', '849d37fa-1c14-466e-87c1-2325c23d073c', '', 'Click', '10.7000', 'USD', '13.3800', 'USD', '1', 'True', 'False', 'False', 'False', '', '95.138.134.110', '46.222.188.248', 'ES', '', 'http://droid-safety.com/sp/scan1/?voluumdata=vid..00000305-cc9e-4715-8000-000000000000__vpid..0c977800-8b73-11e3-8759-c26a9a686c33__caid..c1c24ba3-cbe3-470d-9e8f-192a66242968__lid..849d37fa-1c14-466e-87c1-2325c23d073c__oid1..1ac7589d-b050-4ec2-8e03-3cf386', 'CAKE: (getcake.com): Tracking Service', 'Mozilla/5.0 (Linux; Android 4.3; ka-ge; SAMSUNG GT-I9505 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36', '', 'False', '', 'Madrid', 'GEORGIAN', 'xfera moviles s.a.', '', 'Android', '4', '4.3', 'Chrome', 'Other', '', '0.00', '0.0000', '13.3800', '29699629', '', 'CPA\r'); 
Unknown column 'Price Format' in 'field list' 
+0

是PHP看同一個數據庫作爲直接連接MySQL?奇怪的事情發生了,有可能是一個人在看副本或不同的服務器。 – Andrew

+0

爲什麼你會把空格和標點符號放入數據庫字段名?無論如何,這是從文本文件中獲取列名稱;有可能文件中有一個不好的字符?是否需要從文件中獲取列名,還是可以修復? – miken32

+0

@Andrew沒關係,因爲當我做SELECT時,它工作正常。 – zeflex

回答

1

它可以與空間的問題。

  • 的支票,你沒有空間,當你選擇列

    `Price Format ` 
           ^----//space here 
    

檢查this demo

  • 檢查您的表,列不前或塔後有空格。

    $query = "INSERT INTO `temporary_datas` (`" . implode('`, `', $mysqlCols) . "`) 
         VALUES ('" . implode("', '", $mysqlValues) . "') "; 
    

添加此

$data[$c] = trim($data[$c], " \r"); 
+0

我再次檢查並再次重新創建結構,但它不能解決問題:http://pastebin.com/niHmi4Jd – zeflex

+0

什麼是真正奇怪的:http://pastebin.com/if9nwQat – zeflex

+0

試試這個查詢我做了。 –

0

沒有通過整個事情持續,快速的建議是嘗試沒有在「註冊會計師\ R」的最終值「\ r」,因爲在PHP它是運輸的轉義序列返回並可能導致問題。

編輯:我認爲這是內容包括:

'Mozilla/5.0 (Linux; Android 4.3; ka-ge; SAMSUNG GT-I9505 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36' 

- 所以它在逗號分割:

" 'Mozilla/5.0 (Linux; Android 4.3; ka-ge; SAMSUNG GT-I9505 Build/JSS15J) AppleWebKit/537.36 (KHTML" 
" like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36'" 

所以,你會需要指定fgetcsv包含字符()。例如。

$data = fgetcsv($handle, 1000, ",", "'") 

當插入SQL $查詢時,您可能需要添加單引號。

編輯2: 嘗試調試此:

/* 
if (($handle = fopen(self::UPLOAD_PATH . $this->_filename, "r")) !== false) { 
$mysqlCols = array(); 
while (($data = fgetcsv($handle)) !== false) { 
    $num = count($data); 
    for ($c = 0; $c < $num; $c++) { 

     if ($row == 0) { 
      if (md5($data[$c]) == 'c7393c74ae43e690f8bbb78fcc4d9223') { 
       $data[$c] = 'Unique ID'; // Fix due to an issue with wrong characters while reading... 
      } 
      $mysqlCols[$c] = $data[$c]; 
     } else { 
      $mysqlValues[$c] = $mysqli->real_escape_string($data[$c]); 
     } 
    } 

    if ($row > 0) {*/ 
     #$query = "INSERT INTO `temporary_datas` (`" . implode('`, `', $mysqlCols) . "`) VALUES ('" . implode("', '", $mysqlValues) . "')"; 
     $query = "INSERT INTO `temporary_datas` (`Unique ID`, `Conversion Date`, `Last Updated`, `Click Date`, `Affiliate ID`, `Affiliate Name`, `Advertiser ID`, `Advertiser Name`, `Offer ID`, `Offer Name`, `Creative`, `Sub ID`, `Sub ID 2`, `Sub ID 3`, `Sub ID 4`, `Sub ID 5`, `Type`, `Paid`, `Price Paid Currency`, `Received`, `Price Received Currency`, `Reached Step`, `Pixel`, `Throttled`, `Returned`, `Test`, `Transaction ID`, `IP Address`, `Click IP Address`, `Country`, `Conversion Referrer`, `Referrer`, `Conversion User Agent`, `Click User Agent`, `Note`, `Approved`, `Disposition`, `Region`, `Language`, `Provider Name`, `Device`, `Operating System`, `OS (Major Version)`, `OS (Minor Version)`, `Browser`, `Browser (Major Version)`, `Browser (Minor Version)`, `Conversion Score`, `Paid Unbilled`, `Received Unbilled`, `Click Request Session ID`, `Event Name`, `Price Format`) VALUES ('1258806', '02/01/2014 2:40:05 PM', '02/01/2014 2:46:22 PM', '02/01/2014 2:28:44 PM', '120958', 'iTap Ads', '163', 'Zinq Media', '3002', '[WAP] Android Clean-up - ES', '37670', '', 'cU2U3A68JPK94J990MAK5QFRKD', '{gclid}', '849d37fa-1c14-466e-87c1-2325c23d073c', '', 'Click', '10.7000', 'USD', '13.3800', 'USD', '1', 'True', 'False', 'False', 'False', '', '95.138.134.110', '46.222.188.248', 'ES', '', 'http://droid-safety.com/sp/scan1/?voluumdata=vid..00000305-cc9e-4715-8000-000000000000__vpid..0c977800-8b73-11e3-8759-c26a9a686c33__caid..c1c24ba3-cbe3-470d-9e8f-192a66242968__lid..849d37fa-1c14-466e-87c1-2325c23d073c__oid1..1ac7589d-b050-4ec2-8e03-3cf386', 'CAKE: (getcake.com): Tracking Service', 'Mozilla/5.0 (Linux; Android 4.3; ka-ge; SAMSUNG GT-I9505 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36', '', 'False', '', 'Madrid', 'GEORGIAN', 'xfera moviles s.a.', '', 'Android', '4', '4.3', 'Chrome', 'Other', '', '0.00', '0.0000', '13.3800', '29699629', '', 'CPA\r');"; 
     echo $query . ';<br>'; 
     $result = $mysqli->query($query) or die($mysqli->error); 
     var_dump($result); 
    /*} 

    $row++; 

    if ($count++ == 3) { 
     break; 
    } 
} 
fclose($handle); 
} else { 
    return false; 
} 
*/ 
+0

未解決問題。 – zeflex

+0

@zeflex上面我的編輯是否解決了這個問題? –

+0

對不起,沒有。現在的錯誤是:「列計數與第1行的值計數不匹配」 – zeflex