Pdo为何把我们int型都转换成string型了,能不能让他不转??? 要设置什么参数??这个设计是基于什么考虑???有点小坑爹啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Pdo为何把我们int型都转换成string型了这块的代码是指bindParam吗? php 会根据上下文自动转换数据类型。不需劳你费神 public function setGBK() { $sql = sprintf( "set names 'gbk'" ); $this->conn->exec( $sql ); } public function setBinary() { $sql = sprintf( "set character_set_client=binary" ); $this->conn->exec( $sql ); } public function doExec($sql){ $sql = sprintf($sql); $this->conn->exec( $sql ); } public function query( $sql, $param ) { if( empty( $sql ) || empty( $this->conn ) ) { return array(); } $result = $this->conn->prepare( $sql ); if ( false == $result->execute($param) ) { return array(); } $result->setFetchMode( PDO::FETCH_ASSOC ); $row = $result->fetch(); if( $row ) { return $row; }else { return array(); } } public function querys( $sql, $param ) { if( empty( $sql ) || empty( $this->conn ) ) { return array(); } $result = $this->conn->prepare( $sql ); if ( false == $result->execute($param) ) { return array(); } $result->setFetchMode( PDO::FETCH_ASSOC ); $rows = $result->fetchAll(); return $rows; } 除了 false == 外,没有什么与数据类型的相关的况且 false == 应写作 false === ,这样才真正与类型相关 按照原理 "1" == 1 但是 我这里 return "1"==1 就是false,非得 intval哈才是false 这里不是问题 问题是做算术运算的是 “10”- 5 这样的头疼,我都是强制intval了就好了 也许是我的代码逻辑哪里有问题吧但是pdo这种 数据库的int返回的string的情况真的给我带来不少麻烦mysqli 可没这样的问题 从mysql数据库返回的查询结果都是文本,都会被当成字符串处理,因为PHP并不知道你的表结构。 mysqli和pdo都是这样! 这个问题是挺操蛋的。我也没有找到解决办法。$db = new PDO('mysql:host=' . $host . ';port=3306;dbname=' . $dbname, $username, $password, array(PDO::ATTR_PERSISTENT => TRUE, PDO::ATTR_STRINGIFY_FETCHES => FALSE));$db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, FALSE);$query = "SELECT `name`, `boss`, `madeTime`, `rules`, `id` FROM `company`";$r = $db->query($query);$r->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, FALSE);while ($row = $r->fetch(PDO::FETCH_OBJ)) { $row['id']; //type is string!!!!}据说,蓝色代码是设定它不自动转换为字符串的,但是,无效。红色代码运行时直接告诉我不支持。别告诉我说PHP自动给我转换类型的屁话。我要把$row转换为JSON,都转换成字符串类型了…… getColumnMeta(columnIndex)返回的列元信息里面倒是有正确的类型,但是有两个问题:一、它采用列索引而不是列名作为参数,跟我的读取凡是不符合二、官网上说不要使用这个函数,它可能在任何时候不做任何通知而进行规格更改 成功解决这个问题,汇报一下。首先,在以前的MySQL中还真是不能解决的。它直接返回字符串给外部系统。稍微新一点的MySQL和客户端驱动可以直接内部的本地类型而不再进行内部转换为字符串了。有了这个基础,就有解决的可能了。其次,PDO::ATTR_STRINGIFY_FETCHES对于MySQL来说是无关的,要使用PDO::ATTR_EMULATE_PREPARES(设为FALSE)来告诉MySQL端不要进行转换。最后,当然是用PDO::ATTR_STRINGIFY_FETCHES告诉PHP也不要进行转换了。至此,问题解决。 同样是转 JSON 时遇到这个问题, 后来发现 json_encode() 有一个参数 JSON_NUMERIC_CHECK. 问一个快捷键的问题 急招PHP程序员一名,待遇从优! 向一台器发送请求,返回这样的内容是什么问题 == 生成静态页面的问题 有请各位高手或者有经验的人 == 求php 表格冻结,行和列的代码 大家看看做这样一个网站系统应收多少钱??? 急~ PHP发邮件的标题(字符集)问题 连接问题 请各位大侠快来帮我解决一下,本人将不剩感激!!!!!!(急) 请问大家,PHP怎么和SQLSERVER联接??? PHP开发完成,上传到空间内测试,遇到问题 PHP字符串替换的问题?有没有这样的替换?"[a][a]"替换为AABB
$sql = sprintf( "set names 'gbk'" );
$this->conn->exec( $sql );
}
public function setBinary() {
$sql = sprintf( "set character_set_client=binary" );
$this->conn->exec( $sql );
}
public function doExec($sql){
$sql = sprintf($sql);
$this->conn->exec( $sql );
}
public function query( $sql, $param ) {
if( empty( $sql ) || empty( $this->conn ) )
{
return array();
}
$result = $this->conn->prepare( $sql );
if ( false == $result->execute($param) )
{
return array();
}
$result->setFetchMode( PDO::FETCH_ASSOC );
$row = $result->fetch();
if( $row )
{
return $row;
}else {
return array();
}
}
public function querys( $sql, $param ) {
if( empty( $sql ) || empty( $this->conn ) )
{
return array();
}
$result = $this->conn->prepare( $sql );
if ( false == $result->execute($param) )
{
return array();
}
$result->setFetchMode( PDO::FETCH_ASSOC );
$rows = $result->fetchAll();
return $rows;
}
况且 false == 应写作 false === ,这样才真正与类型相关
按照原理 "1" == 1 但是 我这里 return "1"==1 就是false,非得 intval哈才是false 这里不是问题 问题是做算术运算的是 “10”- 5 这样的头疼,我都是强制intval了就好了
array(PDO::ATTR_PERSISTENT => TRUE, PDO::ATTR_STRINGIFY_FETCHES => FALSE));
$db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, FALSE);$query = "SELECT `name`, `boss`, `madeTime`, `rules`, `id` FROM `company`";
$r = $db->query($query);$r->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, FALSE);while ($row = $r->fetch(PDO::FETCH_OBJ)) {
$row['id']; //type is string!!!!
}据说,蓝色代码是设定它不自动转换为字符串的,但是,无效。红色代码运行时直接告诉我不支持。别告诉我说PHP自动给我转换类型的屁话。我要把$row转换为JSON,都转换成字符串类型了……
一、它采用列索引而不是列名作为参数,跟我的读取凡是不符合
二、官网上说不要使用这个函数,它可能在任何时候不做任何通知而进行规格更改