文档章节

Phalapi框架的数据查询返回结果默认都为字符串类型的修正办法

inuxor
 inuxor
发布于 2017/09/22 16:45
字数 423
阅读 195
收藏 0

实际上这个问题是php的mysql连接库造成的,默认会把所有返回结果都转成字符串。翻阅php官方手册PDO章节找到: http://php.net/manual/zh/pdo.setattribute.php

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

PDO::ATTR_EMULATE_PREPARES 启用或禁用预处理语句的模拟。 有些驱动不支持或有限度地支持本地预处理。使用此设置强制PDO总是模拟预处理语句(如果为 TRUE ),或试着使用本地预处理语句(如果为 FALSE)。如果驱动不能成功预处理当前查询,它将总是回到模拟预处理语句上。 需要 bool 类型。

于是在PDO中可以这样设置:

<?php
$pdo = new PDO($dsn, $user_name, $password, $param);
$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

具体到phalapi框架,可以这样做: 重载NotORMDatabase

<?php

namespace App\Common;

use PDO;
use PhalApi\Database\NotORMDatabase;

class NewNotORMDatabase extends NotORMDatabase
{

    protected function createPDOBy($dbCfg)
    {
        $dsn = sprintf('mysql:dbname=%s;host=%s;port=%d', $dbCfg['name'], isset($dbCfg['host']) ? $dbCfg['host'] : 'localhost', isset($dbCfg['port']) ? $dbCfg['port'] : 3306);
        $charset = isset($dbCfg['charset']) ? $dbCfg['charset'] : 'UTF8';

        $pdo = new PDO( $dsn, $dbCfg['user'],$dbCfg['password']);
        $pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
        $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
        $pdo->exec("SET NAMES '{$charset}'");
        return $pdo;
    }
}

然后在di.php中

// 数据操作 - 基于NotORM
//$di->notorm = new NotORMDatabase($di->config->get('dbs'), $di->debug);
//重写数据库基类
$di->notorm = new App\Common\NewNotORMDatabase($di->config->get('dbs'), $di->debug);

© 著作权归作者所有

inuxor

inuxor

粉丝 33
博文 25
码字总数 14592
作品 0
技术主管
私信 提问
加载中

评论(2)

暗夜在火星
暗夜在火星
好方法,下个版本我加到PhalApi框架
inuxor
inuxor 博主
我凑,官方点赞😳
PhalApi 1.3.5 贺岁发布,PHP 轻量接口框架

[前言] 借春节来临之际, PhalApi(π框架)在此发布v1.3.5幺鸡贺岁小版本,同时祝愿各位同学新春快乐、万事如意! 基于老版本开发的应用可以无缝升级到v1.3.5版本,直接覆盖核心文件PhalApi...

暗夜在火星
2017/01/06
848
6
PhalApi-1.2.1 版本更新,PHP后台接口开发框架

PhalApi-1.2.1 版本发布了,该版本主要更新内容如下: 1、提供Auth 权限扩展 (由@黄苗笋提供,在这里表示再次感谢,^_^) 2、补充了:[4.2] 开发实战2:模拟优酷开放平台接口项目开发 3、自动...

暗夜在火星
2015/08/26
1K
5
PhalApi-v1.3.2,一周年纪念版,轻量级接口框架

#PhalApi-v1.3.2 (一周年纪念版)发布,PHP轻量级开源接口框架# ##[前言]## 时隔一年PhalApi已经一岁了,从无到有在到活跃人数350+的社区,到28+落地项目,实用拓展17+,一切都离不开各位小伙伴的...

喵了_个咪
2016/01/09
1K
5
PhalApi 2.4.0 版本发布,PHP 开源接口框架

PhalApi 2.4.0 [主要更新] 1、在线文档,样式优化,并添加接口搜索功能,方便查找 [辅助更新] 1、新增CORS跨域扩展,由@吞吞小猴 提供 2、2.x文档完善,丰富数据库操作的说明及示例 [BUG修复...

暗夜在火星
2018/12/01
538
1
PhalApi(π框架) v1.4.1 发布,PHP 轻量级 API 接口开发框架

[前言] 夏天的脚步悄悄来临,在各位小伙伴的辛勤付出下,PhalApi迎来了新版本V1.4.1,在这次更新中着重以开发者便捷为本新增优化了很多功能,如对接口文档添加了各项重要功能可以直接在文档页面进...

喵了_个咪
2017/07/01
1K
4

没有更多内容

加载失败,请刷新页面

加载更多

Archiva 不小心删掉了管理员权限怎么办

Archiva 的界面和 UI 比较容易出问题。 在添加用户和为用户进行权限修改的时候,不小心连 admin 这个用户的权限都删掉了。 这个时候应该如何恢复 admin 这个用户的权限? 这个时候你可以尝试...

honeymoose
32分钟前
4
0
Java8新特性之空指针异常的克星Optional类

Java8新特性系列我们已经介绍了Stream、Lambda表达式、DateTime日期时间处理,最后以“NullPointerException” 的克星Optional类的讲解来收尾。 背景 作为开发人员每天与NullPointerExceptio...

程序新视界
44分钟前
4
0
OSChina 周四乱弹 —— 福布斯终身秃头奖

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享如是我闻的单曲《地藏经上卷》: 如是我闻#今日歌曲推荐# 《地藏经上卷》- 如是我闻 手机党少年们想听歌,请使劲儿戳(这里) ...

小小编辑
48分钟前
159
8
Mybatis Plus删除

/** @author beth @data 2019-10-17 00:30 */ @RunWith(SpringRunner.class) @SpringBootTest public class DeleteTest { @Autowired private UserInfoMapper userInfoMapper; /** 根据id删除......

一个yuanbeth
今天
6
0
总结

一、设计模式 简单工厂:一个简单而且比较杂的工厂,可以创建任何对象给你 复杂工厂:先创建一种基础类型的工厂接口,然后各自集成实现这个接口,但是每个工厂都是这个基础类的扩展分类,spr...

BobwithB
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部