如何从调用的两个表中获取数据(函数)两次使用true还是false?

时间:2017-12-06 03:29:45

标签: php mysqli

我有一个功能,负责了解用户是否正确购买(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");

如何获得两个表中提到的相同值?

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 = ?

然后根据需要绑定参数。