复制与粘贴,一知半解的编程
前面使用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注入的危险。
没有了复制与粘贴,编程很费劲了,因为命令都记不住,可是复制与粘贴式的编程给我们带来的麻烦还真是不少,归根结底还是自己的囫囵吞枣,一知半解。
复制与粘贴,一知半解的编程相关推荐
- 为什么复制粘贴时html,关于javascript:为什么你应该停止复制和粘贴
我写代码是为了好玩,也是为了生存.很久以前,我已经复制和粘贴的速度比闪电棒还快.我曾经把握了所有的快捷键._cutting,_partial selection,_当然还有_past_. 这样做的目标 ...
- vb ClipBoard 剪切板应用(复制剪切粘贴)
代码如下:(谨以参考) Private Sub Command1_Click() '复制 If Text1.SelText <> "" Then Cli ...
- 怎么在java中引用图片_如何使用Java(读/写)读取复制和粘贴图片?
在Java语言编程中,如何使用Java(读/写)读取复制和粘贴图片? 注意:需要访问网址:http://book2s.com/java/jar/o/opencv/download-opencv-3.2 ...
- 破解网页禁止使用“复制”、“粘贴“
网页文章无法复制的破解法--最简单的绝招 很多资料性的网络文章,往往在网页禁止使用"复制"."粘贴"命令. 破解方法很简单: 单击IE浏览器的"工具& ...
- java 复制 粘贴_在java中如何实现复制,粘贴,剪切
在java中如何实现复制,粘贴,剪切 关注:272 答案:2 mip版 解决时间 2021-01-25 02:48 提问者挥映在沉默里的渲染 2021-01-24 22:41 请分别写出来,而且讲 ...
- 本地复制不能粘贴到服务上
在服务器上打开任务管理器,查看进程,有 rdpclip.exe 进程.通常,只要存在该进程,就可以在本机和远程服务器之间粘贴文本了. 关闭此进程,然后 开始->运行->rdpclip.ex ...
- C++学习之:复制和粘贴文件/文件夹
从剪贴板上获得要复制/剪贴的文件路径之后,如何完成文件/文件夹的粘贴呢.下面列出了两个函数用来完成这些功能 //复制的粘贴 DWORD VrvCopyFile( LPCWSTR lpSrc, LPCW ...
- CRichEditCtrl 好象没有复制、粘贴的功能(Ctrl+C、Ctrl+v都不好用
CRichEditCtrl 好象没有复制.粘贴的功能(Ctrl+C.Ctrl+v都不好用 问题已经解决,是我没有把系统自动生成的快捷键删去.它没有执行RichEdit的消息. 转载于:https:// ...
- vi 整行 多行 复制与粘贴
vi编辑器中的整行(多行)复制与粘贴就非常必要了. 1.复制 1)单行复制 在命令模式下,将光标移动到将要复制的行处,按"yy"进行复制: 2)多行复制 在命令模式下,将光标移动到 ...
最新文章
- Phone 3rd Recovery
- 3.3 前向传播与反向传播-机器学习笔记-斯坦福吴恩达教授
- 个人博客 | 网站部署终极操作:一行命令搞定!
- 重构 pdf_三维温度场的重构方法,更准确地监测储能系统的电池堆内部温度
- Spring中实现自定义事件
- IntelliJ IDEA 安装本地插件
- mycat重启报错Failed to connect to the Wrapper at port解决方法
- android自带下拉阻尼动画,Android 自带阻尼效果的ScrollView,仿ios效果
- vue-giant-tree 插件 报错. init if undefined
- 运行时设置数据库连接字符串
- 中国智能互动纺织品市场趋势报告、技术动态创新及市场预测
- 如果把ChatGPT和“挖呀挖”的黄老师结合起来,她可以为你做什么事情?
- 自定义view实现涂鸦(画板)功能
- 【企业数字化转型】中台战略
- 游戏开发与实现南梦宫笔记
- xjoi1.4行李托运
- 【DIY娱乐】手机链接PC玩体感游戏
- Oracle start with connect by prior 使用总结
- 向量范数和矩阵范数的相容
- 更新并关机怎么关闭计算机,win10关机并更新能取消吗 win10更新并关机怎样关闭...
热门文章
- 技术与艺术的结合,HMS Core让手机主题趣味丛生
- 一波接一波,吃瓜群众几度崩溃,微博为何总宕机?
- 物联网开发笔记(32)- 使用Micropython开发ESP32开发板之手机扫二维码远程控制开关灯(2)
- 【Flutter web】内网网站如何发布?解决外网下canvaskit.js和字体无法加载问题
- php declare 的语法详解
- Tyvj(无向图的桥)
- STM32F030C8T6芯片参数和内部资源
- 举例说明层次分析的三大原则_20202021企业软件开发流程(3)软件开发过程和软件开发原则...
- 路径规划之PRM类算法
- 2066 一个人的旅行