前面使用LayUI很快就完成了资产清查的小程序,接下来要在一个星期多完成一个招投标的小程序,内容也不复杂,就是给定不同的Word模板,然后管理员指定模板输入格式与内容,用户就可以据此来制定标书,这样用户操作方便快捷,省事而且标书也规范。

  程序是不复杂,用户催得紧,就只能使用LayUI再来做一次。

  LayUI挺优秀的,但已经不更新了,再使用就没有什么意思了,但时间紧没办法,Vus忘记得差不多了,到目前为止我也只接触了LayUI这一框架。

  没想到今天就遭遇麻烦,又被虐了好长时间。

  删除部分就随意拷贝了,前端:

$.ajax({url:'ZTBUser.php',data:{"OP":"删除","c01":selectRowObj['data']['c01'],},type:'POST',async:true,success:function (JsonData) {if(JsonData['data']=='OK'){                            //刷新表格table.render('#currentTableId');}else{layer.msg('删除记录失败!',{time:2000,icon:5});}}
});                             

  后端部分:

$C01 = $_POST['c01'];//获取post的数据
$sql = "delete from htuser where c01='$C01'";
$result =$ZTBConn->query($sql);
$rows = $result->fetch();
$rowCount = $rows[0];
if ( $rowCount>0 ) {$returnArr['data']='OK';
}else{$returnArr['data']="删除失败!";
}
header('Content-type:text/json');
//返回JSON格式的数据
echo json_encode($returnArr,JSON_UNESCAPED_UNICODE);

  点击删除按钮测试程序,没有反应。

  什么情况?

  ⑴PHP中的变量大小写问题?检查,没有。

  ⑵SQL语句问题?将SQL语句返回,正确的。

  ⑶连接数据库问题?检查,没问题。

  那是哪里出了问题?

  然后,我发现LayUI有点问题,我改写了程序,有时候网页内容并没有更新,除非关闭浏览器再次进入才见更新。

  真是怪事,难道我中了木马?!

  纳尼?!被黑客控制了?

  我朗个去,难道要学习计算机和网络安全去防木马?!

  疑神疑鬼,打开进程,仔细检查没有发现异常,打开服务,没有发现异常,用火绒杀一下,没有异常,360安全卫生杀一下,也没有发现异常。

  再检查端口连接情况,还是没有发现异常。

  仙人板板,这会是什么问题?

  检查数据库,数据记录是被删除了,说明程序还是执行了。

  返回格式问题?

  改一下前端代码:

$.ajax({url:'ZTBUser.php',data:{"OP":"删除","c01":selectRowObj['data']['c01'],},type:'POST',async:false,dataType:"JSON",success:function (JsonData) {console.log(JsonData['data']);}
});                 

  点击删除按钮,  

  底下没有输出Undefined,奇怪,怎么会这样?说明这个对象里没有这个属性。

  返回数据不正确?

  那就检查PHP部分了。

  改动:

$C01 = $_POST['c01'];//获取post的数据
$sql = "delete from htuser where c01='$C01'";
$result =$ZTBConn->query($sql);
$rows = $result->fetch();
$returnArr['data']=$rows;
header('Content-type:text/json');
//返回JSON格式的数据
echo json_encode($returnArr,JSON_UNESCAPED_UNICODE);

  再次打印返回值:

console.log(JsonData);//输出{data: false}

  明白了。

  原来$result =$ZTBConn->query($sql);这个是查询语句,执行内容虽然是删除,但是返回的结果却是false,那么正确的删除方式就不能这样。

  这才找到问题所在。

  更改PHP部分:

$C01 = $_POST['c01'];//获取post的数据
$sql = "delete from htuser where c01=?";//sql模板
$Psp = $ZTBConn->prepare($sql);
$Psp->bindValue(1,$C01);//绑定参数
$Psp->execute();//执行预处理语句
$result = $Psp->rowCount();
if($result){$returnArr['data']='OK';
}else{$returnArr['data']="删除失败!";
}
$stmt = null;
$ZTBConn = null;
header('Content-type:text/json');
echo json_encode($returnArr,JSON_UNESCAPED_UNICODE);//返回JSON格式的数据

  前端改为:

layer.confirm('确定要删除这条记录吗?', function (index) {$.ajax({url:'ZTBUser.php',data:{"OP":"删除","c01":selectRowObj['data']['c01'],},type:'POST',async:false,dataType:"JSON",success:function (JsonData) {if(JsonData['data']=='OK'){                         //刷新表格$(".layui-laypage-btn")[0].click();}else{layer.msg('删除记录失败!',{time:2000,icon:5});}},error:function(data){console.log(data);}});
layer.close(index);
})                  

  这才正常工作了。

  原来,$ZTBConn->query($sql)是可以执行增加、删除、修改、查询的命令,但是返回值却不同,正确的做法是根据不同的数据操作来选择不同的处理语句。

  查询应该使用query($sql)方法,但prepare和execute却是执行增加、删除和修改的正确做法,并且这还可以防止SQL注入,就是加转义符号来去除SQL注入的危险。

  没有了复制与粘贴,编程很费劲了,因为命令都记不住,可是复制与粘贴式的编程给我们带来的麻烦还真是不少,归根结底还是自己的囫囵吞枣,一知半解。

复制与粘贴,一知半解的编程相关推荐

  1. 为什么复制粘贴时html,关于javascript:为什么你应该停止复制和粘贴

    我写代码是为了好玩,也是为了生存.很久以前,我已经复制和粘贴的速度比闪电棒还快.我曾经把握了所有的快捷键._cutting,_partial selection,_当然还有_past_. 这样做的目标 ...

  2. vb ClipBoard 剪切板应用(复制剪切粘贴)

    代码如下:(谨以参考) Private Sub Command1_Click()     '复制     If Text1.SelText <> "" Then Cli ...

  3. 怎么在java中引用图片_如何使用Java(读/写)读取复制和粘贴图片?

    在Java语言编程中,如何使用Java(读/写)读取复制和粘贴图片? 注意:需要访问网址:http://book2s.com/java/jar/o/opencv/download-opencv-3.2 ...

  4. 破解网页禁止使用“复制”、“粘贴“

    网页文章无法复制的破解法--最简单的绝招 很多资料性的网络文章,往往在网页禁止使用"复制"."粘贴"命令. 破解方法很简单: 单击IE浏览器的"工具& ...

  5. java 复制 粘贴_在java中如何实现复制,粘贴,剪切

    在java中如何实现复制,粘贴,剪切 关注:272  答案:2  mip版 解决时间 2021-01-25 02:48 提问者挥映在沉默里的渲染 2021-01-24 22:41 请分别写出来,而且讲 ...

  6. 本地复制不能粘贴到服务上

    在服务器上打开任务管理器,查看进程,有 rdpclip.exe 进程.通常,只要存在该进程,就可以在本机和远程服务器之间粘贴文本了. 关闭此进程,然后 开始->运行->rdpclip.ex ...

  7. C++学习之:复制和粘贴文件/文件夹

    从剪贴板上获得要复制/剪贴的文件路径之后,如何完成文件/文件夹的粘贴呢.下面列出了两个函数用来完成这些功能 //复制的粘贴 DWORD VrvCopyFile( LPCWSTR lpSrc, LPCW ...

  8. CRichEditCtrl 好象没有复制、粘贴的功能(Ctrl+C、Ctrl+v都不好用

    CRichEditCtrl 好象没有复制.粘贴的功能(Ctrl+C.Ctrl+v都不好用 问题已经解决,是我没有把系统自动生成的快捷键删去.它没有执行RichEdit的消息. 转载于:https:// ...

  9. vi 整行 多行 复制与粘贴

    vi编辑器中的整行(多行)复制与粘贴就非常必要了. 1.复制 1)单行复制 在命令模式下,将光标移动到将要复制的行处,按"yy"进行复制: 2)多行复制 在命令模式下,将光标移动到 ...

最新文章

  1. Phone 3rd Recovery
  2. 3.3 前向传播与反向传播-机器学习笔记-斯坦福吴恩达教授
  3. 个人博客 | 网站部署终极操作:一行命令搞定!
  4. 重构 pdf_三维温度场的重构方法,更准确地监测储能系统的电池堆内部温度
  5. Spring中实现自定义事件
  6. IntelliJ IDEA 安装本地插件
  7. mycat重启报错Failed to connect to the Wrapper at port解决方法
  8. android自带下拉阻尼动画,Android 自带阻尼效果的ScrollView,仿ios效果
  9. vue-giant-tree 插件 报错. init if undefined
  10. 运行时设置数据库连接字符串
  11. 中国智能互动纺织品市场趋势报告、技术动态创新及市场预测
  12. 如果把ChatGPT和“挖呀挖”的黄老师结合起来,她可以为你做什么事情?
  13. 自定义view实现涂鸦(画板)功能
  14. 【企业数字化转型】中台战略
  15. 游戏开发与实现南梦宫笔记
  16. xjoi1.4行李托运
  17. 【DIY娱乐】手机链接PC玩体感游戏
  18. Oracle start with connect by prior 使用总结
  19. 向量范数和矩阵范数的相容
  20. 更新并关机怎么关闭计算机,win10关机并更新能取消吗 win10更新并关机怎样关闭...

热门文章

  1. 技术与艺术的结合,HMS Core让手机主题趣味丛生
  2. 一波接一波,吃瓜群众几度崩溃,微博为何总宕机?
  3. 物联网开发笔记(32)- 使用Micropython开发ESP32开发板之手机扫二维码远程控制开关灯(2)
  4. 【Flutter web】内网网站如何发布?解决外网下canvaskit.js和字体无法加载问题
  5. php declare 的语法详解
  6. Tyvj(无向图的桥)
  7. STM32F030C8T6芯片参数和内部资源
  8. 举例说明层次分析的三大原则_20202021企业软件开发流程(3)软件开发过程和软件开发原则...
  9. 路径规划之PRM类算法
  10. 2066 一个人的旅行