INSERT SELECT FROM WHERE为每次出现的WHERE生成一行



我有两个sales_orders和sales_invoices。我的目标是在按下按钮时将数据从sales_orders复制到sales_invoices。

我从一个传递WHERE变量(sales_order_id(的表单中的提交中调用PHP中的一个函数。我已经确认变量被正确调用,当我直接在mysql中执行此语句时,它正如预期的那样成功,但当我在函数中运行它时,它会为sales_order_id的每一次出现创建一行(50行,而不是一行(。我的sales_order_id使用12345。

我做错了什么?

这是我的问题:

INSERT into sales_invoices(si_customer_id, si_purchase_order_number, ref, si_gross_total)
select so_customer_id, so_purchase_order_number, sales_order_id, sum(so_gross_total + so_vat_adjustment_value) as gross_total
from sales_orders where sales_order_id = 12345

这是我的PHP代码

function create_invoice(){
if(isset($_POST['create_invoice'])){
$sales_order_id = escape_string($_POST['sales_order_id']);
$query = query("INSERT into sales_invoices(si_customer_id, si_purchase_order_number, ref, si_gross_total)
select so_customer_id, so_purchase_order_number, sales_order_id, sum(so_gross_total + so_vat_adjustment_value) as gross_total
from sales_orders where sales_order_id = $sales_order_id");
confirm($query);

}
}

所有的可变增益都能正常工作,通过回声进行测试。。。sales_order_id是表单上的一个隐藏输入,并且正在按原样进行提取。

感谢大家的投入。通过将代码更改为此

if(isset($_POST['create_invoice']) && $sales_order_id == $_POST['sales_order_id']){

它正常工作。

也谢谢你的小费;删除sum,因为它用于垂直加法,就像对整列求和一样">

相关内容

最新更新