当我尝试在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);
?>
答案 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.")
(别忘了使用“”)
希望这会有所帮助..