喜
所以这是设置:我需要从名为pricelist.csv
的csv文件更新一些价格。数据库表名为products
,并且有一个名为product_id
的列,其中包含产品ID,它们也可以在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']."'");
}
?>
欢迎任何形式的帮助!感谢
答案 0 :(得分:0)
我认为你正在寻找这个(但我没有测试它):
<?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函数。
答案 1 :(得分:0)
您可以使用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
}