mysql报SQLSTATE[22007]的错误的一个原因

博主修改程序将$video参数保存到数据库时出错,程序无法发布新文章。通过var_dump语句找到错误代码SQLSTATE[22007]: Invalid datetime format,原因是查询模版与查询数据里的数据值未一一对应,且$input变量在文件三处分散赋值,增大问题发现难度。

最近在修改一个程序,打算将$video这个参数保存到数据库。修改的过程中出现错误。导致该程序不能发布新文章。在程序的一个db.php程序文件里使用var_dump($input, $stmt) ; 语句看到了错误信息,并找到了错误原因。信息里包含的错误代码是:

SQLSTATE[22007]: Invalid datetime format。

经过查找原因,原来是查询模版与查询数据里的数据值没有一一对应。导致每一次相同的查询都报错,导致不能发布新文章。

例如:预查询模版是:

 $add_id = db_exec(DB_LASTID, 'INSERT INTO `cms_article` (`cid`,`title`,`author`,`show`,`content`,`keywords`,`description`    ,`thumb`,`time`,`video`) VALUES(?,?,?,?,?,?,?,?,?,?)', 'isssssssss', $input);

但是数据$input数组里的数据顺序是这样的:

$input[cid, title, author, show, content, keywords, description, thumb, video, time]

这会导致上面的那一条语句执行报错。

变量$input在一个php文件的三个地方分别进行了赋值,第一次赋值了$input[cid, title, author, show, content, keywords, description] ,第二次赋值了$input[thumb, video],接下来修改了$input[thumb, video]的值,第三次赋值了$input[time] 。分散赋值,增大了发现该问题的难度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值