我已经花了这么多时间,我无法理解。我的while循环返回相同的记录(Sub-Total :)三次。请参阅下面的图片了解我的桌面结构。此外,这是在OsCommerce安装中,因此“tep _.....”函数是一个OsCommerce的东西。我不相信他们是问题,因为我在这里尝试过其他一些非OsCommerce解决方案。
$ot_query = tep_db_query("select * from " . TABLE_ORDERS_TOTAL . " where orders_id = '" . (int) $order_id . "'");
if (tep_db_num_rows($ot_query)) {
while ($ot = tep_db_fetch_array($ot_query)) {
$order_total_sql = tep_db_query("select * from " . TABLE_ORDERS_TOTAL . " where orders_id = '" . (int) $order_id . "'");
$order_total_result = tep_db_fetch_array($order_total_sql);
$email_order .= strip_tags($order_total_result['title']) . ' ' . strip_tags($order_total_result['text']) . "\n";
}
}
表格结构......
orders_total_id | orders_id | title | text | value | class | sort_order
有三个不同的行具有相同的orders_id,但order_total_id不同,当然其他数据也不同。
---更新---
添加
echo "<pre>".print_r($ot, 1)."</pre>\n";
下的($ ot = tep_db_fetch_array($ ot_query)){
产生了以下内容......Array
(
[orders_total_id] => 4149
[orders_id] => 1280
[title] => Sub-Total:
[text] => $49.99
[value] => 49.9900
[class] => ot_subtotal
[sort_order] => 1
)
Array
(
[orders_total_id] => 4150
[orders_id] => 1280
[title] => Gift Certificates (-) :
[text] => $37.00
[value] => 37.0000
[class] => ot_gv
[sort_order] => 3
)
Array
(
[orders_total_id] => 4151
[orders_id] => 1280
[title] => Total:
[text] => $12.99
[value] => 12.9900
[class] => ot_total
[sort_order] => 12
)
答案 0 :(得分:2)
此处的问题出现在while()
之后 - 设置$order_total_sql
的问题。你只使用一条记录进行SELECT - 它不是你从前一个SELECT中存储在$ot
中的那条记录。您的输出基于错误的数据。
所以答案是......使用$ot
而不是制作第二个SELECT。
$ot_query = tep_db_query("select * from " . TABLE_ORDERS_TOTAL . " where orders_id = '" . (int) $order_id . "'");
if (tep_db_num_rows($ot_query)) {
while ($ot = tep_db_fetch_array($ot_query)) {
$email_order .= strip_tags($ot['title']) . ' ' . strip_tags($ot['text']) . "\n";
}
}
答案 1 :(得分:0)
您没有在主循环中更改$ order_id,因此您的内部查询永远不会更改 - 您每次都会获取相同的记录。难道你不应该有... ...
while ($ot = tep_db_fetch_array($ot_query)) {
$order_id = $od['order_id'];
$order_total_sql = etc...
etc...
}
当然,这并没有回答为什么你要运行两次相同的查询...你选择完全相同的“外部”结构,因为你“ind'”......
答案 2 :(得分:0)
您正在选择具有相同orders_id
的记录:
$ot_query = tep_db_query("select * from " . TABLE_ORDERS_TOTAL . " where orders_id = '" . (int) $order_id . "'");
正如我所看到的,orders_id
是订单的ID,而orders_total_id
是子总记录的ID。在您的示例中,您有:
Sub-Total: $49.99
Gift Certificates (-) : $37.00
49.99 - 37.00 = 12.99,所以:
Total: $12.99