2013-04-30 57 views
1

我正在使用一个获取IPN的paypal 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在电子邮件中显示空白。我尝试使用的print_r($ paidstatus),当我有它设置与get_row,它显示了在电子邮件中的“1”,即使数据库值为0

+0

我要补充一点,我已经宣布WPDB $作为全球较早的脚本。 – slick1537 2013-04-30 12:01:57

+1

你可以显示你的wp_bbbiller模式吗? – 2013-04-30 12:27:02

+0

不知道我知道你的意思吗? txn_id是一个varchar(13),付费是tinyint(1)。使用付费为0/1虚假/真实类型的交易。 – slick1537 2013-04-30 14:57:34

回答

1

是的使用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); 
0

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

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

+0

是的,谢谢你get_results作品。我创建了一个新的答案来突出显示正确的代码。同样为了回答你关于将它存储为0或1的问题,我不打算在电子邮件中实际使用它,我打算在一些逻辑中使用它,但我想确保变量被传递出来数据库是否正确,以及我知道输出这样的脚本的唯一方法,以便我可以检查它是否是电子邮件。 – slick1537 2013-05-01 02:26:50