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

PHP报错:Call to undefined function mysqli_result() 代码修改咨询

解决PHP Fatal error: Call to undefined function mysqli_result()的问题

首先,这个报错的核心原因很明确:mysqli扩展里根本没有mysqli_result()这个函数——它是旧版mysql扩展里的函数,而mysql扩展早在PHP 5.5就被废弃,PHP 7之后直接移除了,所以现在用mysqli的话肯定会报这个错。

直接修改报错代码段

原代码里触发报错的这一行:

return mysqli_result($sql, 0, "percentage");

可以替换成以下两种更稳妥的方式:

方式1:用mysqli_fetch_assoc()获取关联数组(推荐)

这种方式直接拿到包含字段名的数组,取值逻辑清晰,不依赖字段顺序:

$row = mysqli_fetch_assoc($sql);
return $row['percentage'];

方式2:用mysqli_fetch_row()获取索引数组

如果习惯用字段的索引位置取值,也可以这么写(注意索引从0开始,需要确认percentage是结果集中的对应位置):

$row = mysqli_fetch_row($sql);
return $row[2]; // 假设percentage是结果集中的第3个字段

额外优化:解决SQL注入风险

原代码里直接把用户输入的$code拼进SQL语句,哪怕有filter()函数,也存在SQL注入隐患。建议改用预处理语句,既安全又高效:

// 替换原有的$sql查询语句
$stmt = mysqli_prepare($con, "SELECT percentage FROM orders_discounts WHERE codex = ? AND expiry > ? AND status = 1 AND ? > discount_offer");
mysqli_stmt_bind_param($stmt, "sii", $code, $now, $total);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);

// 检查结果行数
if (mysqli_stmt_num_rows($stmt) == 0) { 
    return "Invalid coupon code. Please try again."; 
} else { 
    $row = mysqli_fetch_assoc($result);
    return $row['percentage']; 
}

修改后的完整代码

<?php 
include 'client_config.php'; 

foreach($_GET as $key => $value) { 
    $get[$key] = filter($value); 
} 

$total = base64_decode($_GET['total']); 
echo calculate_discount($_GET['code'],$total); 

function calculate_discount($code, $total) { 
    global $con; 
    if ($code && $total) { 
        $now = time(); 
        list($discount_offer_on_totals) = mysqli_fetch_row(mysqli_query($con, "select discount_offer from orders_discounts")); 
        
        if ( $total < $discount_offer_on_totals ) { 
            return "Order total must be ".$curr_symbol. ' '. $discount_offer_on_totals." or more to qualify for discount!"; 
        } 

        // 改用预处理语句,避免注入同时解决mysqli_result报错
        $stmt = mysqli_prepare($con, "SELECT percentage FROM orders_discounts WHERE codex = ? AND expiry > ? AND status = 1 AND ? > discount_offer");
        mysqli_stmt_bind_param($stmt, "sii", $code, $now, $total);
        mysqli_stmt_execute($stmt);
        $result = mysqli_stmt_get_result($stmt);
        
        if (mysqli_stmt_num_rows($stmt) == 0) { 
            return "Invalid coupon code. Please try again."; 
        } else { 
            $row = mysqli_fetch_assoc($result);
            return $row['percentage']; 
        } 
    } else { 
        return "Invalid request! Please enter correct code. "; 
    } 
} 
?>

内容的提问来源于stack exchange,提问作者Anthony Muchangi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:09:43