1

我正在开发一个贝宝 IPN 处理程序,它获取一个 IPN 然后发送一封电子邮件。现在我正在测试它,试图访问我的数据库的“付费”列,以确保之前尚未处理过该交易。但是 $wpdb 似乎没有正确返回东西。我能够在另一个表单上使用 $wpdb 将内容插入数据库,但我无法将其取出。我尝试过 get_var、get_row 和 get_results,并尝试在 get_var 的情况下将它们作为对象、数组或变量进行访问。

$paidstatus = $wpdb->get_var("SELECT paid FROM wp_bbbiller WHERE txn_id = '$txn_id'");

$subject = 'Test e-mail';
$message = "Thank you for your purchase $payer_email. Your total was $".$payment_amount."     for $duration hour 
    with $usercount users.  Previously paid: $paidstatus";

mail ($payer_email , $subject , $message);

现在 $paidstatus 在电子邮件中显示为空白。当我使用 get_row 设置它时,我尝试使用 print_r($paidstatus),它在电子邮件中显示为“1”,即使数据库值为 0。

4

2 回答 2

2

是的,使用 get_results 有效!我能够像这样访问变量

$paidstatus = $wpdb->get_results("SELECT paid FROM wp_bbbiller WHERE txn_id = '$txn_id'");

foreach ($paidstatus as $status) {
    $subject = 'Test e-mail';
    $message = "Thank you for your purchase $payer_email. Your total was $".$payment_amount."          for $duration hour 
    with $usercount users.  Previously paid: ".$status->paid;

    mail ($payer_email , $subject , $message);

}

或者 get_row 也可以这样工作

    $paidstatus = $wpdb->get_row("SELECT paid FROM wp_bbbiller WHERE txn_id = '$txn_id'");

    $subject = 'Test e-mail';
    $message = "Thank you for your purchase $payer_email. Your total was $".$payment_amount." for $duration hour 
    with $usercount users.  Previously paid: ".$paidstatus->paid;

    mail ($payer_email , $subject , $message);
于 2013-05-01T02:23:56.800 回答
0

我认为您需要使用get_results。然后使用 while 循环将数据库中的状态设置为插入电子邮件的变量。

另外,您希望它在您当前拥有变量的消息中说什么$paidstatus。您不想要数据库存储的 0 或 1 吗?您需要创建一个 if 语句来根据变量在数据库中的状态设置变量的值。

于 2013-04-30T19:29:21.040 回答