这里需要一点帮助。
如果我通过 PhpMyAdmin 直接在 SQL 中运行下面的查询,它将给出输出 1,因为记录存在,如果我更改为数据库中不存在的值,它将输出 0。
SELECT IF(COUNT(*) = 0, 0, 1) Result FROM transaction WHERE amount = '100000' AND phone_number = '0714812151' AND status = 'Pending';
但是如果我通过 PHP 运行相同的 SQL,奇怪的是它只是继续执行 ELSEIF 部分,即使我输入了不存在的值。
知道我哪里做错了吗?
global $wpdb;
$getvalue = null;
$sql = "SELECT IF(COUNT(*) = 0, 0, 1) Result FROM transaction WHERE amount = '100000' AND phone_number = '0714812151' AND status = 'Pending'";
$getvalue = $wpdb->get_row($sql);
var_dump($getvalue);
$int = (int)$getvalue;
if ($int <= 0) {
//Error
wc_add_notice('Your Order is 0 ', 'error');
} elseif ($int >= 1) {
//Error
wc_add_notice('Your Order is 1 ', 'error');
} else {
//Error
wc_add_notice('Your Order is Unknown ', 'error');
}
评论变成答案
根据文档,
get_row()
返回一个集合(数组或对象,具体取决于您如何调用它),null或void。成功时应返回您将其称为对象的方式。对对象使用 >=
和 <=
通常没有任何意义,如果您打开了通知(并且在调试期间应该这样做),您应该会看到一条有关转换失败的消息。
尝试将
$int = (int)$getvalue;
更改为 $int = $getvalue->Result;
。或者,您应该能够只使用 $int = $wpdb->get_var($sql);