PDO 查询mysql返回字段整型变为String型解决方法

PDO 查询mysql返回字段整型变为String型解决方法

使用PDO查询mysql数据库时。运行prepare,execute后,返回的字段数据全都变为字符型。

比如id在数据库中是Int的。查询后返回是String型。

对于php这样的弱类型的语言。影响不大。

在做API返回数据时。假设类型与数据库不一致,对于java和Objective C这些强类型,影响就非常大了。

解决方法:

<?php
$pdo = new PDO($dsn, $user, $pass, $param);

// 在创建连接后。增加
$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
?

>

这两句设置的作用

PDO::ATTR_STRINGIFY_FETCHES 提取的时候将数值转换为字符串。

PDO::ATTR_EMULATE_PREPARES 启用或禁用预处理语句的模拟。

很多其它PDO setAttribute可參考:http://php.net/manual/zh/pdo.setattribute.php

时间: 2024-11-03 22:34:06

PDO 查询mysql返回字段整型变为String型解决方法的相关文章

php查询mysql返回大量数据结果集导致内存溢出的解决方法

web开发中如果遇到php查询mysql返回大量数据导致内存溢出.或者内存不够用的情况那就需要看下MySQL C API的关联,那么究竟是什么导致php查询mysql返回大量数据时内存不够用情况? 答案是: mysql_query 和 mysql_unbuffered_query 两个函数 首先来分析一个典型的实例:在执行下面的代码的时候就会导致php请求mysql返回结果太多(10W以上)导致PHP内存不够用. while ($row = mysql_fetch_assoc($result))

java createSQLQuery().list()返回日期格式没有时分秒的解决方法(转)

java createSQLQuery().list()返回日期格式没有时分秒的解决方法(转) J2EE项目中用使用Date类型不显示时分秒的解决方法 2010-04-21 21:35:00|  分类: java技术 |字号 订阅 昨天,阿堂(网络时空)在开发web项目中,发现提取Oracle中某几个Date类型的字段时,发现提出来的Date型值,只有“年月日”,没有“时分秒”显示出来,实际业务中,是要求页面上显示的日期要求是有“年月日是分秒”的.这里说明一下,我是用session.create

mysql Access denied for user [email&#160;protected]错误解决方法总结(转)

mysql Access denied for user [email protected]错误解决方法总结(转) mysql Access denied for user \'root\'@\'localhost\'”解决办法总结,下面我们对常见的出现的一些错误代码进行分析并给出解决办法,有需要的朋友可参考一下. 错误代码 1045 Access denied for user 'root'@'localhost' (using password:YES) 解决办法是重新设置root用户密码,

Mysql Field * doesn&#39;t have a default value解决方法

MySQL 5中,出现错误提示: Field 'id' doesn't have a default value www.2cto.com 解决方法一: 打开my.ini,查找 sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 修改为 sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 然后重启MYSQL 解决方法

SpringMVC中使用@ResponseBody注解返回值,Ajax取得中文乱码解决方法

Spring使用AnnotationMethodHandlerAdapter的handleResponseBody方法, AnnotationMethodHandlerAdapter使用request header中"Accept"的值和messageConverter支持的MediaType进行匹配,然后会用"Accept"的第一个值写入 response的"Content-Type".一般的请求都是通过浏览器进行的,request heade

三星S24A350型显示器黑屏解决方法

三星S24A350型显示器黑屏解决方法 今天一早来实验室,还是和往常一样打开电脑,但是有一点不一样的是电脑显示器么有任何反应.我关了显示器然后再打开,屏幕上就显示"HDMI",然后就没有其他信息了.我把后面视频输入的线拔掉以后,屏幕上就出现"检测信号线"字样. 接下来我就开始排查错误: 1.检查显示器背后的信号线插头是否连接紧固. 2.检查电脑背后的信号线插头是否连接紧固. 发现这都没有问题,这些检测过程中最好是拿别的主机和显示器试一下,看问题是出在主机还是显示器.

Linux下MySql出现#1036 – Table ‘ ‘ is read only 错误解决方法

这两天在进行网站搬家,这次网站搬家采用直接打包mysql数据库和网页文件的形式进行迁移,上传好mysql data目录里面的网站数据库至VPS上mysql存放数据库的目录里面,解压就行.我的VPS存放数据库的路径是 /usr/local/mysql/var. 上传好网站数据,解压,配置好数据库链接参数就行,网站就能正常连接上了,我本以为这已 经是顺利迁移完成了,但后来操作的时候,发现只能读取数据库的内容,不能更改写入任何信息,提示#1036 – Table ‘* ‘ is read only (

Linux环境下MySQL报Table &#39;xxx&#39; doesn&#39;t exist错误解决方法

修改了lower_case_table_names=1 后,业务发有个库的表打不开了,看了表名以前是大写,查了一下如果设置不区分大小写, 以前的大小表名要改成小写.重启服务后可用! MYSQL在LINUX下数据库名.表名.列名.别名大小写规则如下: 1.数据库名与表名是严格区分大小写的 2.表的别名是严格区分大小写的 3.列名与列的别名在所有的情况下均是忽略大小写的 4.变量名也是严格区分大小写的 Linux环境下MySQL报Table 'xxx' doesn't exist错误解决方法

MySQL表类型和存储引擎版本不一致解决方法

使用的是老版本的mysql客户端Navicate 8 ,mysql 服务端用的是mysql5.6的版本,在修改版本引擎的时候出现版本不对; mysql error ‘TYPE=MyISAM’ 解决办法: Replace TYPE=MyISAM with ENGINE=MyISAM The problem was “TYPE=MyISAM” which should be “ENGINE=MyISAM” as per MySQL version updates – a simple search