mysql报SQLSTATE[22007]的错误的一个原因
最近在修改一个程序,打算将$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] 。分散赋值,增大了发现该问题的难度。