参数中包含gb2312的字符串,返回结果是false或者null(不同PHP版本具有差异性)
代码:
<?php $dbms = 'mysql'; $host = '192.168.8.8'; $dbName = 'test'; $user = 'root'; $pass = 'root'; $dsn = "$dbms:host=$host;dbname=$dbName"; try { //初始化PDO $dbh = new PDO($dsn, $user, $pass); } catch (PDOException $e) { //获取异常字符串 $message = $e->getMessage(); //输出下异常字符串.正常输出(SQLSTATE[HY000] [2002] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。) echo $message; //检查字符串的编码.输出EUC-CN.即GB2312 echo mb_detect_encoding($message, ["ASCII", "GB2312", "GBK", "UTF-8"]) . PHP_EOL; //打印下Json类型竟然是false $data = json_encode([ 'message' => $message ]); var_dump($data); }
上面的代码中由于数据库配置错误,一定会抛异常,异常信息是SQLSTATE[HY000] [2002] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
本身是想把错误通过json发送给前端,但是前端总是收不到任何内容,原来是因为pdo内部抛出的异常中携带gb2312编码的中文原因,输出前转换下编码即可
通过http推送消息给socket,socket服务再向客户端推送<?php /* * Socket推送 * 请用守护进程方式启动php msgservice.php & (socket只...
if($_SERVER['REQUEST_METHOD'] == 'POST') { echo('This is post '); } elseif ($_SERVER['...
php arrayaccess 官方的说法是让你能以数组的形式访问对象,对于这种php内置接口一直不太明白有什么用,坚持多看文章,终于理解,特来分享,思路不同,更易于理解。(1).创建一个学生类,并且实现arrayaccess 接口。<?php class studen...
断点下载的原理:http请求头添加Range参数告诉文件服务器端需要的字节范围例如1个文本文件的字节为1000,第一次请求Range: bytes=0-500第二次请求Range: bytes=501-1000通过每次的请求将返回的流追加写入到文件。注意的项目:断点下载服务器端的每次只返回字节传输的...
elasticsearch的操作都是基于http协议的,已经有现成的php类库,composer安装即可。{ "require": { &...
文章篇幅较长,如果不喜欢看文章的,此处抛出韩顺丰老师的位运算视频,韩老师应该是全网讲php位运算符最详细的一个老师了。链接:https://pan.baidu.com/s/14xj7er8eVSUcJ-jYXyA0GA 提取码:731m 链接:https://pan.baidu.com...