2013-04-30 35 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