MYSQLi返回0然而查询在数据库上执行

时间:2014-09-20 10:38:03

标签: php mysql sql mysqli

当我尝试在PHP中执行一个函数时,MySQLi查询正在执行,但只返回值0,但查询在数据库上执行。

function get_delivery_cost($mysqli, $item_ids) {
    $query = $mysqli->prepare("SELECT (max(item_single_cost) + sum(item_additional_cost)) AS total FROM item_delivery WHERE item_id IN (?) AND item_single_cost NOT IN (SELECT max(item_single_cost) FROM item_delivery WHERE item_id IN (?)) LIMIT 1");
    $query->bind_param('ss', $item_ids, $item_ids);
    $query->execute();
    $query->store_result();
    $query->bind_result($delivery_cost);
    $query->fetch();
    return $delivery_cost;
}

$ item_ids的样本是1,2,3,当直接在数据库上运行相同的查询时,总列返回3.30英镑,但MySQLi函数返回0。

运行该功能的php是:

<? 
    array_push($item_ids, $basket_item->item_id);
    $ids = join(',', $item_ids);
    $delivery_cost = get_delivery_cost($mysqli, $ids); 
    echo number_format($delivery_cost, 2);
?>

2 个答案:

答案 0 :(得分:1)

我很确定问题是这部分情况:

item_id IN (?)

如果$ids$ is set to '1,2,3', then this is equivalent to item_id ='1,2,3'and not to item_id在(1,2,3)中。相反,您可以直接替换值:

item_id in (".$ids.")

答案 1 :(得分:0)

您需要使用$ids运算符替换IN中存储的值。

这将是item_id in (".$ids.")(别忘了使用“”)

希望这会有所帮助..