You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何addkey方法已成功插入数据,对应的if条件仍返回false?

问题分析与解决方案

我一眼就瞅出问题所在了——你的addkey方法完全没在执行成功时返回true!

问题根源拆解

在PHP里,如果函数没有明确写return语句,默认会返回null。而布尔条件判断里,null会被直接当作false处理。这就导致哪怕数据已经成功写入数据库,你的if判断还是会走到else分支输出FALSE。

看看你的addkey方法代码:

public function addkey($key_value,$key_balance,$key_created_date){ 
    if ( !$this->link ) return false; 
    $query = "INSERT INTO `" . $this->table_prefix . "keys` (`key_value`,`key_balance`, `key_created_date`) VALUES('" . $this->realEscapeSingle($key_value) . "', '" . $this->realEscapeSingle((int)$key_balance) . "', '" . $this->realEscapeSingle($key_created_date) . "')"; 
    ++$this->queries_; 
    mysqli_query($this->link,$query); 
    $key_id = mysqli_insert_id($this->link); 
    if( !$key_id ) { 
        echo mysqli_errno($this->link) . ": " . mysqli_error($this->link); 
        return false; 
    } 
    // 这里!成功执行后没有任何返回语句!
}

只有数据库连接失败、插入失败时,方法会返回false;但插入成功拿到有效$key_id后,方法啥也不返回,默认给个null,条件判断自然把它当成false了。

修复方法

只需要在方法最后加一行return true;就行:

public function addkey($key_value,$key_balance,$key_created_date){ 
    if ( !$this->link ) return false; 
    $query = "INSERT INTO `" . $this->table_prefix . "keys` (`key_value`,`key_balance`, `key_created_date`) VALUES('" . $this->realEscapeSingle($key_value) . "', '" . $this->realEscapeSingle((int)$key_balance) . "', '" . $this->realEscapeSingle($key_created_date) . "')"; 
    ++$this->queries_; 
    mysqli_query($this->link,$query); 
    $key_id = mysqli_insert_id($this->link); 
    if( !$key_id ) { 
        echo mysqli_errno($this->link) . ": " . mysqli_error($this->link); 
        return false; 
    } 
    // 新增成功后的返回语句
    return true;
}

额外优化建议

其实还可以加一步mysqli_query的结果校验,毕竟极端情况下可能出现查询执行失败但插入ID不为空的情况(虽然概率极低),优化后更稳妥:

// 执行查询并先检查执行结果
$result = mysqli_query($this->link,$query);
if (!$result) {
    echo mysqli_errno($this->link) . ": " . mysqli_error($this->link);
    return false;
}
$key_id = mysqli_insert_id($this->link);
if( !$key_id ) { 
    echo "插入成功但未获取到自增ID";
    return false; 
}
return true;

内容的提问来源于stack exchange,提问作者Amin Hijaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:24:50