如题:
// 开始事务 $mysqli->autocommit(false); // 设置为不自动提交,因为MYSQL默认立即执行 $stmt = $mysqli->prepare("update seat_table set count = count + 1 where seat_id = ? and count < 50"); $stmt->bind_param("i", $old_seat_id); if ($stmt->execute()) { $stmt->close(); $stmt = $mysqli->prepare("update seat_table set count = count-1 where bus_id = ? and seattime = ? and count > 0"); $stmt->bind_param("is", $bus_id, $seattime); if ($stmt->execute()) { $mysqli->commit(); // 提交 /* 判定事务终止,重新启用负载均衡 */ $mysqli->autocommit(TRUE); $mysqli->close(); // if ($flag == 1) { // 执行退款业务// } echo json_encode(array( "code" => "200", "order_id" => $stmt->insert_id )); } else { // 减库失败 $mysqli->rollback(); die('1500'); } } else { // 回库失败 $mysqli->rollback(); die('2500'); }
首先我这个语句报了错,报Fatal error: Call to a member function bind_param() on a non-object ,报错地方在第一个语句(加库存操作count=count+1),但是无解为什么报错,语句是不会错的,在命令行可正确执行
然而就算报错了,却仍然被执行了(十万个程序员问号),结果就是库存加了1,要减的没有变化。
我蒙蔽了,大半夜的很头痛。
求助问题所在!!非常感谢!!!
慕的地6264312
犯罪嫌疑人X
相关分类