我正在尝试创建一个 csv 文件来更新我在 Magento 中的库存.我的代码如下:
I am attempting to create a csv file to update my inventory in Magento. My code is as follows:
<?php
require_once ('../db.php');
$conn = db_connect();
$inventory = array();
$csvContent = "";
$n=0;
$result = $conn->query("select inventory.sku, book.author, book.title,
book.publisher, book.pub_date, book.edition,
inventory.isbn13, book.binding, book_condition.book_condition, defect.defect, note,
feature, inventory.ourPrice, inventory.cost, inventory.quantity, subtitle, weight
from inventory
LEFT JOIN book on book.isbn13 = inventory.isbn13
LEFT JOIN defect on inventory.defect_id = defect.defect_id
LEFT JOIN note on inventory.note_id = note.note_id
LEFT JOIN feature on inventory.feature_id = feature.feature_id
LEFT JOIN book_condition on book_condition.condition_id = defect.condition_id
where inventory.quantity >0");
$num_rows = $result->num_rows;
if($num_rows > 0)
{
while($row = $result->fetch_assoc())
{
$inventory[$n] = array('sku' => $row['sku'],
'author' => $row['author'],
/*'title' => $row['title'],
'publisher' => $row['publisher'],
'pub_date' => $row['pub_date'],
'edition' => $row['edition'],
'publisher' => $row['publisher'],
//'isbn10' => $isbn10,
'isbn13' => $row['isbn13'],
'binding' => $row['binding'],
'condition' => $row['condition'],
'defects' => $row['defect'],
'notes' => $row['note'],
'feature' => $row['feature'],
'price' => number_format($row['ourPrice'], 2, '.', ''),
'cost' => $row['cost'],
'description' => $row['defect'],
'quantity' => $row['quantity'],
'store' => "default",
'websites' => "base",
'attribute_set' => "books",
'type' => "simple",
'category' => "6",
'type' => "simple",
'image' => "/bcpics/".$row['isbn13'].".gif",
'small_image' => "/bcpics/".$row['isbn13'].".gif",
'thumbnail' => "/bcpics/".$row['isbn13'].".gif",
'page_layout' => "No Layout updates",
'options_container' => "Block after Info Column",
'weight' => $row['weight'],
'status' =>"Enables",
'tax_class_id' =>"Taxable Goods",
'visibility' =>"Catalog, Search",
'enable_googlecheckout' =>"yes",
'is_recurring' =>"no",
'min_qty' =>"0",*/
'use_config_min_qty' =>"1",
'is_qty_decimal' =>"0",
'backorders' =>"0",
'use_config_backorders' =>"1",
'min_sale_qty' =>"1",
'use_config_min_sale_qty' =>"1",
'max_sale_qty' =>"0",
'use_config_max_sale_qty' =>"1",
'is_in_stock' =>"1",
'use_config_notify_stock_qty' =>"1",
'manage_stock' =>"0",
'use_config_manage_stock' =>"1",
'stock_status_changed_automatically' =>"0",
'use_config_qty_increments' =>"1",
'qty_increments' =>"0",
'use_config_enable_qty_increments' =>"1",
'enable_qty_increments' =>"0",
'store_id' =>"1",
'product_type_id' =>"simple",
'add_delete' => "",
'url_key' => "",
'gift_message_available' => "",
'Topic' => "",
'Subtitle'=> $row['subtitle'],
'meta_title' => "",
'meta_description' => "",
'custom_design' => "",
'url_path' => "",
'special_price' => "",
'meta_keyword' => "",
'custom_layout_update' => "",
'news_from_date' => "",
'news_to_date' => "",
'special_from_date' => "",
'special_to_date' => "",
'custom_design_from' => "",
'custom_design_to' => "",
'low_stock_date' => "",
'notify_stock_qty' => "",
'product_status_changed' => "",
'product_changed_websites'=> "",
'has_options'=> "0"
);
//print_r($inventory);die;
$n++;
} //end of while loop
} // end of if statement
$csvInventory = to_csv($inventory);
function to_csv( $array ) {
$csv = "";
if (count($array) == 0) return "No SKU's found";
## Grab the first element to build the header
$arr = array_pop( $array );
$temp = array();
foreach( $arr as $key => $data ) {
$temp[] = $key;
}
$csv = implode( ',', $temp ) . "
";
## Add the data from the first element
$csv .= to_csv_line( $arr );
## Add the data for the rest
foreach( $array as $arr ) {
$csv .= to_csv_line( $arr );
}
return $csv;
}
function to_csv_line( $array ) {
$temp = array();
foreach( $array as $elt ) {
$temp[] = '"' . addslashes( $elt ) . '"';
}
$string = implode( ',', $temp ) . "
";
return $string;
}
$conn->close();
$myFile = "/home/bookcell/public_html/testbcos/web/inv/BCWebsite" . date("mdY") . ".csv";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = $csvInventory;
fwrite($fh, $stringData);
fclose($fh);
我的问题是,如果我尝试使用 $inventory[$n] = array() 中的所有参数,我将无法让它工作.我可以一次让数组中的大约 30 行以外的所有行工作,目前 /* 和 */ 中的所有内容都将不起作用.我玩过更改 /* 和 */ 之间的字段,所以我知道每一行都会毫无问题地进入 csv.我检查了我服务器上的错误日志,没有错误,传输日志显示它应该可以工作.有人看到我哪里出错了吗?有没有更好的方法可以得到我需要的结果?
My problem is that I can't get it to work if I try to use all the parameters in the $inventory[$n] = array(). I can get all but about 30 rows in the array to work at one time, currently everything in the /* and */ will not work. I have played with changing the fields between /* and */ so I know that each row will go into the csv without a problem. I have checked the error logs on my server and there is no error, and the transfer log shows that it should be working.
Anyone see where I am going wrong here? Is there a better way to do this that will get the results I need?
我已经从 PHP 和 MySQL 导出了 600MB+ 大小的 csv 文件,这与您没有问题的方式类似.听起来像是您的环境设置有问题,而不是代码或技术限制.
I have exported 600MB+ sized csv files from PHP and MySQL in a similar way that you are with no issues. Sounds like a problem with your environment settings - not with the code or a limitation of the technologies.
这篇关于使用 php 和 mysql 创建 csv 文件时是否有文件大小限制?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
在 SELECT(MYSQL/PHP) 中加入 2 个表Joining 2 tables in SELECT(MYSQL/PHP)(在 SELECT(MYSQL/PHP) 中加入 2 个表)
如何使<option selected=“selected">由How to make lt;option selected=quot;selectedquot;gt; set by MySQL and PHP?(如何使lt;option selected=“selectedgt;由 MySQL 和 PHP 设置?)
使用 PHP 中的数组自动填充选择框Auto populate a select box using an array in PHP(使用 PHP 中的数组自动填充选择框)
PHP SQL SELECT where like search item with multiple wordsPHP SQL SELECT where like search item with multiple words(PHP SQL SELECT where like search item with multiple words)
json_encode 从 MSSQL-SELECT 产生 JSON_ERROR_UTF8json_encode produce JSON_ERROR_UTF8 from MSSQL-SELECT(json_encode 从 MSSQL-SELECT 产生 JSON_ERROR_UTF8)
MySQL ORDER BY rand(),名称 ASCMySQL ORDER BY rand(), name ASC(MySQL ORDER BY rand(),名称 ASC)