MySql查询:记录包含小数的金额的字段有困难

时间:2014-04-30 23:27:00

标签: php mysql paypal

添加 - 解决:我的代码从一开始就很好,问题是使用的货币,如果是美元,它将按原样运行。我的测试是用CAD货币完成的,为此," amount_gross"返回一个空值(来自Paypal的doc),必须使用" mc_gross" - 为所有货币工作!

适用于所有货币的正确代码是:

$item_name = $_POST['item_name']; 
$item_number = $_POST['item_number']; 
$payment_status = $_POST['payment_status']; 
$payment_amt = $_POST['mc_gross'];          // instead of payment_gross !!!
$txn_id = $_POST['txn_id']; 
$payer_email = $_POST['payer_email'];
$custom = $_POST['custom']; 
if ($payment_status == 'Completed') { ....

感谢大家的帮助!!!

---添加结束---

我的项目中有一个最后的问题,(Paypal集成):在Ipn发送"完成"之后,我喜欢将数据保存到MySQL,但是我对该字段存在问题" payment_amt& #34 ;.

当金额没有小数(例如:100)时,它有效,带小数(例如:100.34),不记录payment_amt。记录所有其他字段。它与我必须添加的参数有关,虽然我很难理解逻辑(我不是程序员)。谢谢你的帮助。

 mysql_query("INSERT INTO al_paypal
(item_name,item_number,payment_status,payment_amt,txn_id,payer_email,custom,commerce_id)
       VALUES (
       '". $item_name ."',
       '". $item_number ."', 
       '". $payment_status ."',
       '". $payment_amt ."',  // does not record if amount has decimals
       '". $txn_id ."',
       '". $payer_email ."',
       '". $custom ."',
       '". $commerce_id ."'
        )"); 
    }
$item_name = $_POST['item_name']; // restaurant
$item_number = $_POST['item_number']; // my ordernymber
$payment_status = $_POST['payment_status']; //should be Completed
$payment_amt = $_POST['payment_gross'];
$txn_id = $_POST['txn_id']; // Paypal transaction number
$payer_email = $_POST['payer_email'];
$custom = $_POST['custom']; 
if ($payment_status == 'Completed') { ....

这是更多代码

下面:

 $payment_amt = "33,56";  // if I use this it records properly
 $payment_amt = $_POST['payment_gross']; // if I use this it records 0
 // if I use (as suggested) ". $payment_amt .",  instead of: '". $payment_amt ."',  Nothing records at all.
 $payment_amt  = preg_replace("/,/", '.', $payment_amt);
 $payment_amt =  number_format($payment_amt, 2, '.', '');

很难理解什么是错的。不能使用错误,因为它是IPN,它会在Paypal发送内容时运行。

我检查了

  $payment_amt = $_POST['payment_gross'];

它确实(我有通过文本消息发送的金额)。

 $headersCell = 'From: "" <"' . $_POST['payment_gross']. '">'. "\r\n". "Content-type:text/html;charset=iso-8859-1" . "\r\n";
 mail($emailtoCell, $subjectCell, $textCell, $headersCell);

怪异。我今晚放弃了。

3 个答案:

答案 0 :(得分:0)

当payment_amt类型为整数试用楼层时($ payment_amt * 100)

答案 1 :(得分:0)

确保字段payment_amt在数据库中的类型为FLOATDOUBLE。此时可能是INT或其他整数。

答案 2 :(得分:0)

删除字段的引号并尝试:

mysql_query("INSERT INTO al_paypal
(item_name,item_number,payment_status,payment_amt,txn_id,payer_email,custom,commerce_id)
       VALUES (
       '". $item_name ."',
       '". $item_number ."', 
       '". $payment_status ."',
        ". $payment_amt .",
       '". $txn_id ."',
       '". $payer_email ."',
       '". $custom ."',
       '". $commerce_id ."'
        )") or die(mysql_error());

删除// does not record if amount has decimals