試圖拼湊fgetcsv問題和答案以獲取我需要的位置,但不掌握足以獲得所需結果的基礎知識。 的製表符分隔文件樣本....以製表符分隔的文件並根據匹配的行更新MySQL字段到唯一字段
╔══════════════╦════════════╦═══════╦══════════╗
║ sku ║ asin ║ price ║ quantity ║
╠══════════════╬════════════╬═══════╬══════════╣
║ 00-1IAB-H5E9 ║ B008S0TEFQ ║ 5.00 ║ 1 ║
║ 00-BOXP-HDX4 ║ B00BP9N4JO ║ 20.00 ║ 1 ║
╚══════════════╩════════════╩═══════╩══════════╝
我需要更新一個新的數量在數據庫的基礎上,SKU。發現了很多類似的答案,但不完全是我需要的。價格和ASIN被忽略。這是我的代碼到目前爲止的相關部分。
$fin = fopen('qtyme.txt','r') or die('cant open file');
$link = mysql_connect('xxxx.com', 'xxxx', 'xxxx');
If (!$link) {
die ('Could not connect: ' . mysql_error());
}
@mysql_select_db('xxxx') or die ('Unable to select database');
echo "Connection succeeded, starting processing..... <br />\n";
while (($data=fgetcsv($fin,r,"/t"))!==FALSE) {
$query = "UPDATE products SET products_quantity = '".$data[3]."' WHERE products_sku = '".$data[0]."'";
mysql_query($query);
echo ($query) . "<br />\n";
}
fclose($fin);
mysql_close();
很顯然,我不知道我在做什麼,但似乎我的問題是在定義列拉出正確的數據進行更新。
有幫助嗎?
FINAL解決方案:非常感謝您的幫助!
$link = mysql_connect('xxxx', 'xxxx', 'xxxx'); If (!$link) {
die ('Could not connect: ' . mysql_error()); } @mysql_select_db('xxxx') or die ('Unable to select database');
$sql = "TRUNCATE TABLE `tmpStock`"; mysql_query($sql); echo "Temporary Table Deleted...<br>";
$result = mysql_query("LOAD DATA LOCAL INFILE 'qtyme.txt' INTO TABLE tmpStock FIELDS TERMINATED BY '\t' ENCLOSED BY '\"' LINES TERMINATED BY '\n'")or die ('Error: '.mysql_error()); echo "Temporary Data Uploaded and Inserted...<br>";
$result = mysql_query("UPDATE products a INNER JOIN tmpStock b ON a.products_sku = b.sku SET a.products_quantity = b.quantity")or die ('Error: '.mysql_error()); echo "All Quantity's Updated...";
mysql_close($link);
該問題似乎是fgetcsv。你有第二個參數r當它應該是最大行大小(或0默認它),而第三個參數有一個斜線用來表示一個製表符。 – Kickstart 2013-05-13 16:28:06