林新的论坛,但希望有人能够给我一个手IM挣扎..PHP输出查询
我的代码如下,我出口从Zen Cart的数据库CSV文件
$products_cost =
"select p.products_id, pd.products_name, p.products_quantity, ".
"p.products_cost, (p.products_quantity*p.products_cost) AS products_total_cost, ".
"p.products_type ".
"from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd ".
"where p.products_id = pd.products_id and pd.language_id='" . $_SESSION['languages_id'] . "' ".
"order by (p.products_cost) DESC, p.products_cost desc, pd.products_name";
$products_stock = $db->Execute($products_cost);
//Start Of Output for Stock File
$output = array();
$output["tx_type"]='ST';
$output["Stock_Code"]= $products_stock->fields['products_id'];
$output["Qty"]= $products_stock->fields['products_quantity'];
$output["Description"]= $products_stock->fields['products_name'];
$output["CostPriceEx"]= $products_stock->fields['products_cost'];
$output["TotalCostEx"]= $products_stock->fields['products_cost'] * $products_stock->fields['products_quantity'];
zen_sages_fwrite($output);
$stimer = microtime_float();
运行代码时,我得到如下的输出,但不显示数据库中的每个产品,它显示的是相同的?
ST,1149,10,350gsm A6 Glossy Postcards,290.0000,2900
ST,1149,10,350gsm A6 Glossy Postcards,290.0000,2900
ST,1149,10,350gsm A6 Glossy Postcards,290.0000,2900
ST,1149,10,350gsm A6 Glossy Postcards,290.0000,2900
ST,1149,10,350gsm A6 Glossy Postcards,290.0000,2900
ST,1149,10,350gsm A6 Glossy Postcards,290.0000,2900
ST,1149,10,350gsm A6 Glossy Postcards,290.0000,2900
ST,1149,10,350gsm A6 Glossy Postcards,290.0000,2900
ST,1149,10,350gsm A6 Glossy Postcards,290.0000,2900
ST,1149,10,350gsm A6 Glossy Postcards,290.0000,2900
ST,1149,10,350gsm A6 Glossy Postcards,290.0000,2900
我曾尝试加入$products_stock->MoveNext();
但dosent缝有任何影响,
感谢大家提前
罗素
我的代码现在看起来像
//开始输出圣ock文件
$output = array(); while (!$products_stock->EOF) {
$output["tx_type"]='ST';
$output["Stock_Code"]= $products_stock->fields['products_id'];
$output["Qty"]= $products_stock->fields['products_quantity'];
$output["Description"]= $products_stock->fields['products_name'];
$output["CostPriceEx"]= $products_stock->fields['products_cost'];
$output["TotalCostEx"]= $products_stock->fields['products_cost'] * $products_stock->fields['products_quantity'];
$ products_stock-> MoveNext;
}
zen_sages_fwrite($ output);
$ stimer = microtime_float();
您使用的PDO?这只是做一个,因为你只取一行。根据资源类型'$ products_stock'的不同,您需要创建一个循环,它会遍历每一行,随时写入(或保存为一次写入)。另外,作为一个附注,您已经计算了查询中的总成本,为什么再次使用PHP进行计算而不是使用数据库中的字段? – Jon 2013-03-08 16:27:46
嗨,jon,谢谢你的回复,我不知道PDO是什么?如何创建这个循环?我的经验是相当有限的。我应该有,并且会提前修改谢谢。 – 2013-03-08 16:35:52
在你的'$ output = array()'的开头添加'while(!$ products_stock-> EOF){'并且关闭while在''''fwrite'后加上'}',但是在那之前,加上'$ products_stock-> MoveNext;' – Jon 2013-03-08 16:41:53