在thinkphp项目中遇到一个奇葩的问题,插入记录后数据会被改变

图片说明如图,前面两个 print_r 有后面的 exit 语句的时候,print_r打印的数据都正常。然而把 exit 放到插入记录(红框那句)这句后面,打印出来的东西就有的成为了null。
明显,在执行插入语句的时候上面的$_GET,和data被修改了。但是打印却在插入语句的前面。
下面这张图是 exit 语句放到插入语句后面的 print_r 打印;
图片说明
下面这是 exit 语句放到插入记录前面的 print_r 打印
图片说明

这问题困扰我很久了,一直不知道怎么解决。希望有了解或者遇到同样问题的人给予我解答或者一起讨论。

2个回答

exit不是已经结束当前脚本了么,你定义的应该就不生效了吧,还怎么添加?

yur_c
yur_c exit 结束在 插入语句前,$data 和 $_GET 的值都是正常的; exit 结束在插入语句后(也就是执行了插入语句),$data 和 $_GET 的值就已经被改变了。但是插入语句在输出语句(print_r)的后面,不知道为什么 $data 和 $_GET 会因为插入语句而被修改。
大约 3 年之前 回复

你用的D("")方法,看看对应的model是不是重写了add()方法,加入了部分字段过滤或者权限检查之类的东西,或者吧D()改成M()试试

qq_35235940
听楼一夜雨 实在没办法那你就加个特定的判断条件,让它调过execute吧
大约 3 年之前 回复
yur_c
yur_c 回复听楼一夜雨: 上面说到的 PDO 是 php 的内置对象 PDO;
大约 3 年之前 回复
yur_c
yur_c 回复听楼一夜雨: 在 PDO::execute() 前面数据都在,但是执行了 PDO::execute() 之后,数据就错误了。这是php的问题了么?我该怎么解决这样的问题呢?
大约 3 年之前 回复
qq_35235940
听楼一夜雨 回复yur_c: 那你把sql语句打印出来吧,感觉就是add方法里面有过滤,看看按住ctrl去点add,跳到哪里的add方法里面了,然后在里面打印data调查一下,看看出问题的位置
大约 3 年之前 回复
yur_c
yur_c 改成M()也没用的,model也没有重写,这问题,奇葩了。。第一次遇到。我再仔细看看。
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问