$ wpdb-> get_var对我不起作用

时间:2013-04-30 11:24:48

标签: php mysql wordpress wpdb

我正在使用PayPal 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。

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

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

另外,您希望在您的邮件中说明您当前拥有变量$paidstatus的内容。您不希望像您的数据库一样存储0或1吗?您需要创建一个if语句,以根据数据库中的状态设置变量的值。