一个tp3.2奇怪的数据保存不完整的问题的解决

保存数据130多行,只保存了60多行进去,

仔细排查,发现是有个图片路径的字段的问题, 有些图片路径是带90端口的,例如 http://www.x.com:90/a1.jpg,就保存不进去,

看日志,发现sql变成这样了 

insert into t(...,img_url,...) values (...,  'http://www.x.com:'AA8472'0/a1.jpg' , ...)

这都不是一个正确的字符串了,90到哪儿去了? 

原来是Driver.class.php里面,绑定变量替换的时候,:90里面刚好碰到了一个:9,它就把:9给替换为'AA8472'了,AA8472是第9个字段的值,

因为绑定变量未解析之前是这样的嘛:

insert into t(...,img_url,...) values  :0, :1, :2 ...
$this->bind =
[
    ':0'=>'xxxx',
    ':1'=>'29484',
    ':2'=>'skdfjKSdfjsdfk',
    ...
    ':9'=>'AA8472',
    ...
]

知道问题所在就好办了,源程序里面绑定变量是:开头,给他搞复杂一点,比如:__param__,就可以了,

$this->bind =
[
    ':__param__0'=>'xxxx',
    ':__param__1'=>'29484',
    ':__param__2'=>'skdfjKSdfjsdfk',
    ...
    ':__param__9'=>'AA8472',
    ...
]

但是一定要冒号开头,否则不会替换的

猜你喜欢

转载自blog.csdn.net/wuzuyu365/article/details/116139170