假设用户想要在网上商店中编辑他的订单,但同时他的订单已被处理,并且此订单的状态设置为"已发送"。当然,他无法真正了解这一点,因为订单数据在发送之前只加载了一段时间。现在他只能得到消息"出错了......"
通过以下方案,我只能向用户发送(通过ajax)消息,订单无法更新(数据未被更改或某些值不匹配)在WHERE子句中):
$edit_order = $this->db->prepare('UPDATE orders SET '.$some_fields_loop.' WHERE id=:order_id AND user_id=:user_id AND product_id=:product_id AND NOT status = :ready AND NOT archived = 1');
$edit_order->bindValue( ... );
$edit_order->execute();
if ($edit_order->rowCount())
{
echo(json_encode(array('status'=>'success', 'msg'=>'Your order has just been updated'));
}
else
{
echo(json_encode(array('status'=>'error', 'msg'=>'Your order has not been updated'));
}
但我希望更具体,让他知道究竟发生了什么(最终根据ajax响应修改了DOM元素的顺序)。
order_id 错误,或 user_id ,因为他的会话刚刚过期且会话[ user_id ]与之不匹配订单,等等......并发回给用户相应的消息。
如何在单个查询中执行此操作?这是否可能,或者我应该单独使用单个WHERE子句运行每个查询(我真的想避免哪些)?
答案 0 :(得分:1)
SELECT * FROM orders WHERE id=:order_id
首先,然后根据所需的值验证结果。