嗨
设置是这样的:我需要从一个名为pricelist.csv的csv文件中更新一些价格。数据库表名为products,有一个名为product_id的列,其中包含产品in,也可以在csv文件的第一列中找到,价格和我需要的最后一列位于csv文件的第7列中。我需要将这些内容写入数据库的price列。
我已经尽了最大的努力来想出代码,但这对我的技能水平来说似乎太多了。这是我做的:
<?php
include("admin/include/db.php");
$res=mysql_query("select * from products");
$row = 1;
$mycsvfile = array(); //define the main array.
if (($handle = fopen("pricelist.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE)
{
$num = count($data);
$row++;
$mycsvfile[] = $data;
}
fclose($handle);
}
$row['product_id'] = $mycsvfile[$which_row][1] //trying to find the row in the csv
$mycsvfile[$which_row][7] = $price; //should get price, but previous line does not work
while($row=mysql_fetch_array($res))
{
mysql_query("update products set price='".$price."', isavailable='1' where id='".$row['id']."'");
}
?>欢迎任何形式的帮助!谢谢
发布于 2011-03-05 06:46:01
我认为你正在寻找这个(但我没有测试它):
<?php
include("admin/include/db.php");
if( ( $handle = fopen("pricelist.csv", "r") ) !== FALSE )
{
while( ( $r = fgetcsv( $handle, 1000, ";") ) !== FALSE )
{
mysql_query('UPDATE products SET "price"="'.$r[6].'", "isavailable"="1" where "id"="'.$r[0].'"');
}
}免责声明__:是的,我知道我没有清理数据,但我不想使用过时的mysql函数。
发布于 2011-03-05 06:50:19
您可以使用file()将CSV文件读入数组。然后使用str_getcsv()从文件数组中读取每一项,并将其转换为表示CSV文件中的一行的数组。然后将该数组中的数据提取到更新查询中并运行它。
如下所示:
$id = 0;
$price = 6;
$csv_file = file('pricelist.csv');
foreach($csv_file as $row)
{
$data = str_getcsv($row);
$query = "UPDATE products SET price = {$data[$price]}, isavailable='1' WHERE `id` = {$data[$id]}";
//run the query
}https://stackoverflow.com/questions/5200037
复制相似问题