Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么我的PHP mysql代码接受购物车中没有产品的客户订单?

为什么我的PHP mysql代码接受购物车中没有产品的客户订单?
EN

Stack Overflow用户
提问于 2018-07-08 20:15:01
回答 1查看 124关注 0票数 -1

我用PHP和mysql开发了一个网上购物网站。当顾客下订单时,首先我会检查他的购物车里是否有任何产品。如果没有产品,他就不能下订单,并向他显示他的购物车是空的消息,并将他重定向到主页。但今天,有人设法在购物车里没有一件产品的情况下了订单。这怎么可能呢?有没有可能代码有时无法准确执行?如果不是,为什么会发生在我的案例中?

我正在发布我在保存客户订单时使用的代码行。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
session_start();
include "connection.php";

if (isset($_POST['submit'])){
$cutomer_id=$_SESSION['customer_id'];
$customer_address=$_POST['delivery_address'];
$customer_name=$_POST['customer_name'];
$session_id= session_id();

//IF CART EMPTY THEN REJECT ORDER
$strSql= "select * from cart where session_id='" .$session_id."'";

    $result= mysqli_query ($con,$strSql);
    //if nothing found in cart then opt out
    $count_prods = mysqli_num_rows($result);

                            if($count_prods==0){

                            echo "Your cart is empty";
                            exit;
                            }
//UPDATE THE DELIVERY ADDRESS OF THE CUSTOMER
$update_address="UPDATE user_info SET address1='$customer_address', first_name='$customer_name' WHERE user_id='$cutomer_id'";

$success= mysqli_query($con,$update_address);

//making order number
$strsql2="SELECT NEXTval('order_number_producer') as order_number";
    $result2=mysqli_query($con,$strsql2);
    $got_it=mysqli_fetch_assoc($result2);
    $order_number=$got_it['order_number'];

//first insert into new orders

date_default_timezone_set("Asia/Delhi");
$orderTime=date("d-m-Y h:i:s A");

$strsql3="INSERT INTO new_order (order_number, customer_id, order_status,delivery_date, delivery_time,order_time) VALUES ('$order_number','$cutomer_id','processing','$delivery_date','$delivery_time','$orderTime')";
$successfull= mysqli_query($con,$strsql3);

//Now insert order details into order_details table

$strSql= "select * from cart where session_id='" .$session_id."'";

    $result= mysqli_query($con,$strSql);
    while ($rows= mysqli_fetch_assoc($result)){
    $p_id       =$rows['p_id'];
    $qty    = $rows['qty'];
    $price  = $rows['price'];


$strsqlOrderDetails="INSERT INTO order_details(order_number, product_id, qty, price) VALUES ('$order_number','$p_id','$qty','$price')";
    $done= mysqli_query($con,$strsqlOrderDetails);

}

//New order created, ordered products inserted...NOW CLEAR THE CART OF   CUSTOMER
$clearcart=$strSql= "delete from cart where session_id='" .$session_id."'";

    $cleared= mysqli_query($con,$clearcart);
echo "Order submitted. Your order number is # $order_number";

}
?>
EN

回答 1

Stack Overflow用户

发布于 2018-07-08 20:27:21

听起来可能是臭名昭著的按钮双击问题。看起来订单在第一次点击时就通过了,结果购物车被清空了。

然后第二次点击(在双击中)没有找到订单?

也许可以尝试通过双击按钮来模拟这种行为,如果这是罪魁祸首,则添加一些javascript以防止双击按钮。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51235656

复制
相关文章
客户决策 | 我的代码没有else
「策略模式」比较简单,大家平常工作中应该经常使用到,所以本文作为复习,帮助大家温故知新。我们先来看下定义:
用户1093396
2020/10/28
9200
客户决策 | 我的代码没有else
MySQL练习六:订单最多的客户
在表 orders 中找到订单数最多客户对应的 customer_number 。
兔云小新LM
2021/09/25
7930
MySQL练习六:订单最多的客户
代码组件 | 我的代码没有else
前端大行组件化的当今,我们在写后端接口代码的时候还是按照业务思路一头写到尾吗?我们是否可以思索,「后端接口业务代码如何可以简单快速组件化?」,答案是肯定的,这就是「组合模式」的作用。
用户1093396
2020/10/29
1.2K0
代码组件 | 我的代码没有else
代码模板 | 我的代码没有else
抽象类里定义好算法的执行步骤和具体算法,以及可能发生变化的算法定义为抽象方法。不同的子类继承该抽象类,并实现父类的抽象方法。
用户1093396
2020/10/29
1K0
代码模板 | 我的代码没有else
为什么我的HibernateDaoSupport没有注入SessionFactory
1.按理来说Spring应该会通过setSessionFactory方法将SessionFactory注入进来,可是并没有。
用户2032165
2019/04/09
3.1K0
为什么我的HibernateDaoSupport没有注入SessionFactory
为什么 MyBatis 源码中,没有我那种 if···else
在MyBatis的两万多行的框架源码中,使用了大量的设计模式对工程架构中的复杂场景进行解耦,这些设计模式的巧妙使用是整个框架的精华。
搜云库技术团队
2023/10/21
1940
为什么 MyBatis 源码中,没有我那种 if···else
为什么 MyBatis 源码中,没有我那种 if···else
在MyBatis的两万多行的框架源码中,使用了大量的设计模式对工程架构中的复杂场景进行解耦,这些设计模式的巧妙使用是整个框架的精华。
一行Java
2023/09/19
2240
为什么 MyBatis 源码中,没有我那种 if···else
链式调用 | 我的代码没有else
但是有一点直到被处理为止,代表最终只会被一个实际的业务对象执行了实际的业务逻辑,明显适用的场景并不多。但是除此之外,上面的那两点优势还是让人很心动,所以,为了适用于目前所接触的绝大多数业务场景,把概念进行了简单的调整,如下:
用户1093396
2020/10/29
1.7K0
链式调用 | 我的代码没有else
状态变换 | 我的代码没有else
「状态模式」比较简单,就是算法的选取取决于自己的内部状态。相较「策略模式」算法的选取由用户决策变成为内部状态决策,「策略模式」是用户(客户端)选择具体的算法,「状态模式」只是通过内部不同的状态选择具体的算法。
用户1093396
2020/10/28
8740
状态变换 | 我的代码没有else
订阅通知 | 我的代码没有else
虽然本文的题目叫做“订阅通知”,但是呢,本文却主要介绍「观察者模式」如何在真实业务场景中使用。是不是有些不理解?解释下:
用户1093396
2020/10/29
1.8K0
订阅通知 | 我的代码没有else
PHP+MYSQL购物车实战(1)sql的数据
意思是:mt_rand函数的意思是随机数1~4包括1和4. 然后是插入数据到数据库shop_goods表中,然后把浏览器中的数据放进数据库表中啊
贵哥的编程之路
2020/10/28
6590
我的PHP常用代码段
/** *用户文件上传 */ public function userFile($file='', $exts=[]){ $config = array( 'maxSize' =>'3145728',// 设置附件上传大小 'savePath' => './Users/',//设置保存路径 'exts' =>$exts,// 设置附件上传类型 'autoSub'=>
仇诺伊
2018/09/12
9260
2021年电商基础面试总结「建议收藏」
①技术更新较快:根据市场的需求,不断迭代更新. ②技术涉及面广:除了 PHP,还会用到 Python,GO 等其他的一些语言;数据库中 MySQL,nosql 是最频繁使用的(当然也有的公司会用 oracle,但是 PHP 一般都是以 MySQL 为主),服务器端使用 Linux(少部分公司会用到 Unix),还经常涉及到服务器安全、系统安全等安全方面的技术. ③分布式:从前的单一的机器上运行,现在是分散到不同机器上,最后将数据集中汇总。集中式向分布式进行发展是由需求来推动. ④高并发、集群(高可用集群)、负载均衡:由并发问题采用集群进行处理,其中,集群会涉及服务器的主从以及分布问题,使用负载均衡。(权重高低)高可用是对用户而言,用户的服务不中断(系统升级,服务不中断,公司电商系统的部分更新等)。 ⑤海量数据:每年商家的各类活动(双 11,双 12 等等)订单量、浏览数、商品量、活动相关数据都将会超级大超级多(一般随同高并发出现). ⑥业务复杂:电商业务并不简单:并不是商品展示出来后,简单的加入购物车后购买就完成了。除此以外后台业务逻辑是相当复杂,比如优惠(包邮、满减),秒杀,抢购等. ⑦系统安全:系统上线必须通过系统安全部门审核通过,安全性问题正逐步的被放到台面上,而且很多企业对这块相当重视.
全栈程序员站长
2022/07/19
2.8K0
2021年电商基础面试总结「建议收藏」
PHP+MYSQL购物车逻辑推理
<?php error_reporting('E_ALL&~E_NOTICE'); header('content-type:text/html;charset=utf-8'); session_s
贵哥的编程之路
2020/10/28
1.1K0
php接受不到ajax的post数据
今天我在开发中遇到了一种情况: 我从html头信息里可以看到post传过去的数据,甚至打印ajax返回的json也是可以,但唯独加上键以后就变成了undefined。也就是说js并没有识别该json 解决方法:eval()函数转换:eval() 函数会将传入的字符串当做 JavaScript 代码进行执行。
九霄道长
2021/03/02
1.7K0
LeetCode MySQL 1045. 买下所有产品的客户
写一条 SQL 查询语句,从 Customer 表中查询购买了 Product 表中所有产品的客户的 id。
Michael阿明
2021/02/19
4230
我不曾忘记的初心-愿天堂没有代码
已经过去4年了,q群里已经有1年没人在里面聊天了,他还在,大家总会想起他,看过第一篇“我不曾忘记的初心的-10年”文章的朋友, 应该记得2011年我进入了通行行业的公司,在那里认识了一位鹏飞兄弟,当时
IT架构圈
2018/05/31
8710
Leetcode 586. 订单最多的客户
select customer_number from orders group by 1 order by count(*) desc limit 0,1
glm233
2021/04/15
2940
PHP+MYSQL购物车:通俗易懂理解等你来哦+我的博客里面有核心解释
create table if not exists shop_goods( id int unsigned auto_increment key, gname varchar(50) not null unique, price decimal(10,2) not null default 0, number int unsigned not null default 0, pic varchar(50) NOT NULL DEFAULT 'jd.jpg' ); //购物需要的数据篇 <!DOC
贵哥的编程之路
2020/10/28
4250
点击加载更多

相似问题

MySQL查询,查找没有订单/没有订单的客户

313

没有有效订单的MySQL精选客户

20

PHP购物车没有显示大量的产品

10

Mysql查询每年选择没有订单的客户

24

Magento购物车产品不在输入订单中

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文