你应该叫$statement->finish();
之前$db_handle->disconnnect();
.
通常你不需要打电话finish
,除非你没有得到所有的行.如果使用循环获得所有结果,fetchrow_array
除非中止循环,否则不要在结束时调用finish.
我不确定为什么MySQL驱动程序在完成后没有完成语句fetchall_hashref
.手册建议您的查询可能因错误而中止:
如果发生错误,则fetchall_hashref返回到目前为止所获取的数据,该数据可能为无.您应该事后检查$ sth-> err(或使用RaiseError属性)来发现数据是否完整或是否由于错误而被截断.