起因:在mysql中插入数据 insert into pm_menu(id,iconcls,seq,src,text,pid) values(2,'icon-tip',3,'\usermgr\forward.do','人员管理',1) 发现src列转义符被吃掉了变成了这样:‘usermgrforward’ — — !于是乎我就去百度搜解决方案
解决方案一、
他的意思是用addslashes()、mysql_escape_string()函数进行处理,然后把处理的结果赋予cc这个变量,插入的时候再把cc的值取出来。但是我贴到mysql中发现语法编辑器不认cc这个变量因为你没有声明,那好吧我就去声明。
mysql中有三种变量:局部变量、用户变量、会话变量具体的声明初始化步骤在下面的帖子里
https://www.cnblogs.com/gavin110-lgy/p/5772577.html
声明用户变量并初始化set @cc = ‘’; 成功!,然后执行$cc = addslashes('usermgr\forward.do') 语法编辑器冒红叉 不认cc这个变量...用mysql_escape_string()这个函数也没用,没办法换一个教程吧。。
解决方案二、加双斜线
update pm_menu set src = '\\usermgr\\forward.do' where id = 5
这个时候它报了一个错原因是安全模式怕你没加条件把所有的数据都改了:Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Queries and reconnect.
解决方案:关闭安全模式 SET SQL_SAFE_UPDATES = 0
执行成功!
再走修改语句
报错:原因是不能以不是主键的列作为条件,因为我这张表在创建的时候就没设置主键
解决方案:把id作为主键 alter table pm_menu add primary key(id)
报:“我的表中有两行数据的id相同” Error Code: 1062. Duplicate entry '2' for key 'PRIMARY'
解决方案:由于这两行的数据完全一样所以我决定删除一行
删除语句执行成功!
alter table pm_menu add primary key(id) 设置主键成功!
重新执行修改语句:update pm_menu set src = '\\usermgr\\forward.do' where id = 2
成功!
总结:虽然这是一个小问题但是花费了我一个上午加上下午一个小时的时间,对高手来说这种问题一般秒解但是对我这种菜鸟来说这个问题并不简单。虽然我之前也会mysql基础的CRUD,但是到实际操作的时候就会碰到一些问题、躲不掉的,或许到两三年后我会觉得这个问题简单的可笑吧但是在现阶段就是这样。即便成为了某一领域的大神去到另外一个完全陌生的领域,专业知识、经验都用不上也会这样这很正常。另外还有一些感悟:逻辑人人都有但是并不是人人都能解决技术问题,知识要比逻辑重要的多!