保存数据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',
...
]
但是一定要冒号开头,否则不会替换的