mysql返回修改后

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql返回修改后相关的知识,希望对你有一定的参考价值。

参考技术A mysql返回修改后
原因是,mysql驱动使用mysql_fetch_row函数取得结果集,它是个字符串数组,即所有列都是字符串方式的存储,并且没根据DB存储的类型进行转换,相应地,列的元数据也就都是字符串类型了;

另外,pdo本身的数据类型也有限,跟DB、DB客户端库函数的数据类型有差异,比如pdo没有浮点数类型。

根据pdo接口规范,只要修改mysql驱动中的两个回调函数就可以了:

pdo_stmt_describe_col_func pdo_mysql_stmt_describe



pdo_stmt_get_col_data_func pdo_mysql_stmt_get_col

(前面是pdo中的函数类型,后面是mysql驱动中的对应实现函数)。

前者是描述结果集的列的元数据,原来对类型信息统一描述为字符串,

改为根据mysql的存储类型使用对应的pdo类型描述即可;

后者是从结果集中取列数据,因为结果集的存储是mysql客户端库管理的,

可根据pdo_stmt_get_col_data_func的规范使用新分配的存储,来持有类型转换后的数据,并通知pdo用后释放改存储空间;

这两个要同时修改,因为pdo从pdo驱动中取数据时候要根据类型信息进行处理。

对于php v5.3.2中的pdo_mysql,修改pdo_mysql_stmt_describe函数,

替换
参考技术B 的行数

MySQL的UPDATE语句会返回一个整数值,表示被修改的行数。如果没有行被修改,则返回0。
参考技术C mysql返回修改后的列_PDO Mysql驱动返回结果的列类型问题
PDO的Mysql驱动返回的结果中,所有的字段都是字符串,
使用statement->getColumnMeta得到的列元信息,其中的pdo_type也表明是字符串。

php可以自动处理类型转换,比如整型和字符串,但是对于其他环境,比如传给其他平台(如flash),就要在其中一端进行类型转换,或者在协议中处理。另外,要基于查询结果的元信息构建自动化的数据处理,比如ORM,也就不方便了。

原因是,mysql驱动使用mysql_fetch_row函数取得结果集,它是个字符串数组,即所有列都是字符串方式的存储,并且没根据DB存储的类型进行转换,相应地,列的元数据也就都是字符串类型了;

另外,pdo本身的数据类型也有限,跟DB、DB客户端库函数的数据类型有差异,比如pdo没有浮点数类型。

根据pdo接口规范,只要修改mysql驱动中的两个回调函数就可以了:

以上是关于mysql返回修改后的主要内容,如果未能解决你的问题,请参考以下文章

mybatis+mysql insert添加数据后返回数据主键id

layui点击主页面分页数据点击修改数据后 返回当前分页的页面数据没有刷新

list做MySQL假缓存怎么在调用接口后自动刷新假缓存

mybatis update返回值

控制器返回后修改 JSON 对象

使用修改后的 URL 返回上一页