我有一个功能,负责了解用户是否正确购买(complete
)或购买状态是否为(incomplete
)。
此功能只有一个查询。
function checkOrderComplete($con,$id_product,$id_user){
$res = false; // the default result
$stmt = $con->prepare("SELECT status FROM order WHERE id_product=? AND id_user=? AND status=? limit 1");
$stmt->bind_param("iis",$id_product,$id_user,$status);
$status='complete';
$stmt->execute();
$stmt->store_result();
if ($stmt->num_rows ===1){
$res = true;
} else {
$res = false;
}
return $res;
}
现在我添加了一个名为 order_details 的新表
id_order_product order_date id_product quantity price id_order
1 ----- 2 1 10.00 18
2 ----- 6 1 50.00 18
顺序
id_order id_user status
18 3 complete
所以我想要实现的功能与您之前可以实现的功能相同,它考虑了购买的状态(如果已完成或未完成),产品的ID以及用户的ID谁购买了。
然后执行以下步骤,但它显示$stmt->bind_param("isi",$id_user,$status,$id_product);
查询:
$stmt = $con->prepare("SELECT order.status, order.id_user, order_details.id_product FROM order inner join order_details ON order.id_user=? order.status=? order_details.id_product=? LIMIT 1");
如何获得两个表中提到的相同值?
答案 0 :(得分:0)
您的JOIN
格式不正确。定义JOIN
的方法是使用ON
关键字来定义哪些字段应该等于执行JOIN
。像这样:
SELECT order.status,
order.id_user,
order_details.id_product
FROM order
INNER JOIN order_details ON order_details.id_order = order.id_order
WHERE order.id_user = ?
AND order.status = ?
AND order_details.id_product = ?
然后根据需要绑定参数。