PHP 函数与 MySQL 查询执行 IF 语句的一侧

问题描述 投票:0回答:1

这里需要一点帮助。

如果我通过 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');
}
php mysql wordpress
1个回答
0
投票

评论变成答案

根据文档

get_row()
返回一个集合(数组或对象,具体取决于您如何调用它),null或void。成功时应返回您将其称为对象的方式。对对象使用
>=
<=
通常没有任何意义,如果您打开了通知(并且在调试期间应该这样做),您应该会看到一条有关转换失败的消息。

尝试将

$int = (int)$getvalue;
更改为
$int = $getvalue->Result;
。或者,您应该能够只使用
$int = $wpdb->get_var($sql);

© www.soinside.com 2019 - 2024. All rights reserved.