要设置什么参数??这个设计是基于什么考虑???有点小坑爹啊

解决方案 »

  1.   

    Pdo为何把我们int型都转换成string型了这块的代码是指bindParam吗?
      

  2.   

    php 会根据上下文自动转换数据类型。不需劳你费神
      

  3.   

    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;
    }
      

  4.   

    除了 false == 外,没有什么与数据类型的相关的
    况且 false == 应写作 false === ,这样才真正与类型相关
      

  5.   


    按照原理 "1" == 1 但是 我这里 return "1"==1 就是false,非得 intval哈才是false 这里不是问题 问题是做算术运算的是 “10”- 5 这样的头疼,我都是强制intval了就好了
      

  6.   

    也许是我的代码逻辑哪里有问题吧但是pdo这种 数据库的int返回的string的情况真的给我带来不少麻烦mysqli 可没这样的问题
      

  7.   

    从mysql数据库返回的查询结果都是文本,都会被当成字符串处理,因为PHP并不知道你的表结构。 mysqli和pdo都是这样!
      

  8.   

    这个问题是挺操蛋的。我也没有找到解决办法。$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,都转换成字符串类型了……
      

  9.   

    getColumnMeta(columnIndex)返回的列元信息里面倒是有正确的类型,但是有两个问题:
    一、它采用列索引而不是列名作为参数,跟我的读取凡是不符合
    二、官网上说不要使用这个函数,它可能在任何时候不做任何通知而进行规格更改
      

  10.   

    成功解决这个问题,汇报一下。首先,在以前的MySQL中还真是不能解决的。它直接返回字符串给外部系统。稍微新一点的MySQL和客户端驱动可以直接内部的本地类型而不再进行内部转换为字符串了。有了这个基础,就有解决的可能了。其次,PDO::ATTR_STRINGIFY_FETCHES对于MySQL来说是无关的,要使用PDO::ATTR_EMULATE_PREPARES(设为FALSE)来告诉MySQL端不要进行转换。最后,当然是用PDO::ATTR_STRINGIFY_FETCHES告诉PHP也不要进行转换了。至此,问题解决。
      

  11.   

    同样是转 JSON 时遇到这个问题, 后来发现 json_encode() 有一个参数 JSON_NUMERIC_CHECK.