【发布时间】:2016-04-15 05:30:50
【问题描述】:
我在 WP 安装中使用此查询从自定义表中输出最低的 a 代码。它成功输出了 ID 最低的行,并且取值为“0”。所以,这一切都很好 - 但是,在同一个函数中,我希望输出的代码将其设置为 1,而不是 0。我尝试了很多变化,但不能完全破解它。有任何想法吗?谢谢。
function voucher_func() {
global $wpdb;
$vouchers = $wpdb->get_results("SELECT MIN(code) AS code FROM vouchers WHERE taken=0");
foreach($vouchers as $voucher){
return $voucher->code;
}
}
add_shortcode( 'latest_voucher', 'voucher_func' );
从最初的建议开始,我已经走到了这一步。这仍然会输出正确的数据,但不会将 'taken' 更新为 1
function voucher_func() {
global $wpdb;
$vouchers = $wpdb->get_results("SELECT MIN(code) AS code FROM vouchers WHERE taken=0");
foreach($vouchers as $voucher){
return $voucher->code;
}
}
$wpdb->update('vouchers', array('taken' => 1), array('code' => $voucher->code));
add_shortcode( 'latest_voucher', 'voucher_func' );
这就是我现在所拥有的......
function voucher_func() {
global $wpdb;
$vouchers = $wpdb->get_results("SELECT MIN(code) AS code FROM vouchers WHERE taken=0");
foreach($vouchers as $voucher){
$wpdb->update('vouchers', array('taken' => 1), array('code' => $voucher->code));
return $voucher->code;
}
}
add_shortcode( 'latest_voucher', 'voucher_func' );
这是我最终的工作代码:
function voucher_func() {
global $wpdb;
$vouchers = $wpdb->get_results("SELECT MIN(code) AS code FROM vouchers WHERE taken=0");
foreach($vouchers as $voucher){
return $voucher->code;
}
}
add_shortcode( 'latest_voucher', 'voucher_func' );
function action_wpcf7_mail_sent( $contact_form ) {
global $wpdb;
$vouchers1 = $wpdb->get_results("SELECT MIN(code) AS code FROM vouchers WHERE taken=0");
foreach($vouchers1 as $voucher1){
$wpdb->update('vouchers', array('taken' => 1), array('code' => $voucher1->code));
}
};
add_action( 'wpcf7_mail_sent', 'action_wpcf7_mail_sent', 10, 1 );
【问题讨论】:
-
您尝试过哪些有不起作用?
-
从凭证中删除 ( .... SELECT ... ) 和其他变体 :-(
-
这是最后的手段。如果可能的话,我宁愿保留记录并使用 SET take=1,但我也无法让它工作。
-
那么
UPDATE vouchers ....
标签: php mysql wordpress select