0

0

为毛PDO查询过程会导致服务器断开?

php中文网

php中文网

发布时间:2016-06-23 14:00:53

|

1044人浏览过

|

来源于php中文网

原创

今天帮人改个程序,测试一切正常后,发过去,在服务器上出现问题,访问某个页面的时候就会出现页面打不开的提示,让检查网络,貌似是服务器断开了连接。

      $sql = "SELECT client_id, expires, scope FROM tokens WHERE oauth_token = :oauth_token";      $stmt = $this->db->prepare($sql);      $stmt->bindParam(":oauth_token", $oauth_token, PDO::PARAM_STR);      $stmt->execute();      $result = $stmt->fetch(PDO::FETCH_ASSOC);

跟踪了半天,发现执行到$stmt->execute();的时候就会出现这样的问题
而奇怪的是,同个页面另一个函数却正常:

      $sql = "SELECT code, client_id, redirect_uri, expires, scope FROM auth_codes WHERE code = :code";      $stmt = $this->db->prepare($sql);      $stmt->bindParam(":code", $code, PDO::PARAM_STR);      $stmt->execute();


经过调试,参数里的数据没一点问题,改成Mysql驱动获取数据就一切正常,所以数据是没问题的。会是什么问题呢?有人遇到过这样的问题吗?


回复讨论(解决方案)

信息太少,不好判断。

打开错误提示没有,有不有错误信息。

检查数据库连接

参考:http://www.php.net/manual/en/pdo.error-handling.php

出错原因是,select中没有oauth_token字段。

$sql = "SELECT  client_id, expires, scope FROM tokens WHERE oauth_token = :oauth_token";
$stmt = $this->db->prepare($sql);
$stmt->bindParam( ":oauth_token", $oauth_token, PDO::PARAM_STR);

$sql = "SELECT  code, client_id, redirect_uri, expires, scope FROM auth_codes WHERE code = :code";
$stmt = $this->db->prepare($sql);
$stmt->bindParam( ":code", $code, PDO::PARAM_STR);

信息太少,不好判断。

打开错误提示没有,有不有错误信息。
打开错误提示的,其它错误都能显示,到这里的时候不显示错误,直接就服务器断开连接了,跟踪调试了下,发现程序是有运行的,但是到$stmt->execute()这一步就挂了。

出错原因是,select中没有oauth_token字段。

$sql = "SELECT  client_id, expires, scope FROM tokens WHERE oauth_token = :oauth_token";
$stmt = $this->db->prepare($sql);
$stmt->bindParam( ":oauth_token", $oauth_token, PDO::PARAM_STR);

$sql = "SELECT  code, client_id, redirect_uri, expires, scope FROM auth_codes WHERE code = :code";
$stmt = $this->db->prepare($sql);
$stmt->bindParam( ":code", $code, PDO::PARAM_STR);

这个是查询条件里的参数,跟Select里的字段有什么关系????

补充:直接拼接SQL,然后用$this->db->query也不行。
很奇怪的问题,后来全部改成Mysql直接读写了,不通过PDO了,但是这个问题没找到原因,心里很不舒服。

你总是得贴出错误信息的!
另外,如果你的 php 版本低于 5.3 的话,建议还是不要用 PDO(总是有些莫名其妙的错误的)

你总是得贴出错误信息的!
另外,如果你的 php 版本低于 5.3 的话,建议还是不要用 PDO(总是有些莫名其妙的错误的)
已经说了,没有错误信息,直接停止运行了,同时服务器断开了连接,浏览器显示无法连接服务器的提示。

print_r($this->db->errorInfo());

print_r($this->db->errorInfo());
没有信息。
声明一点,所有基本的调试方法我都试过了,包括将错误信息写到文本文档里,因为服务器断开连接了,所以有任何信息都是没办法看到的,所以就写到文件里了,但是文件里也是没有错误信息,而且证明了到那个语句的时候后面的所有语句都不运行了,应该是服务器停止脚本运行并断开了连接。

没有信息?那可不对约
即便是没有错误(错误号为 0000)也是有输出的

可实际情况就是这样,错误号为0还是空我忘了,反正没有表示出错的信息输出。
再者,无论出什么错误,如果有错误信息输出,那也不至于服务器会断开连接,应该是其它原因,但是不知道是什么问题。

贴全代码,肯定有错误。

SELECT client_id, expires, scope FROM tokens WHERE oauth_token = :oauth_token

直接拿sql放到mysql编辑器执行试试。

贴全代码,肯定有错误。
我给的代码已经够全了。无非是数据库连接那部分没给出来,但是那个肯定没错,是公共调用的,同个库,其它都运行正常。

SELECT client_id, expires, scope FROM tokens WHERE oauth_token = :oauth_token

直接拿sql放到mysql编辑器执行试试。
调试的最基本方法,我早试过了,SQL查询语句没有一点问题,要不然在我的电脑上就不能运行了,只是移到阿里云服务器上后这里就挂了,换成Mysql直接查询一切正常。

阿里云服务器 支持 PDO 吗?
请找管理员核实一下

阿里云服务器 支持 PDO 吗?
请找管理员核实一下
这不是查看phpinfo()就可以看得到?

阿里云服务器 支持 PDO 吗?
请找管理员核实一下
帖子里说明了,另一处正常,就这里不正常,不支持的话另一处能正常吗?

好!
1、pdo 出错,mysql 不出错
2、一处正常,一处不正常

显然问题出在不正常的程序中
mysql 没有 prepare 和 bindParam
你说错误应在哪里?

好!
1、pdo 出错,mysql 不出错
2、一处正常,一处不正常

显然问题出在不正常的程序中
mysql 没有 prepare 和 bindParam
你说错误应在哪里?
程序很正常,至少在开发环境一切正常。
要是知道错误在哪,就不用来这问了。

检查代码里有没有$this->db=NULL;
是不是清空了?

你有客户端吧,客户端总会给你打印出一些东西的,例如

你访问了你的a.php 这个是操作pdo的,你在服务器上的apache/nginx查看不到所有的log?如果看不到那你就看看客户端上服务器response的http code是什么 message是什么,总有办法的。

PDO 我碰见过如果用长连接 会导致一些网页直接挂掉。

检查代码里有没有$this->db=NULL;
是不是清空了?
没有,该有的代码我都贴出来了,除了公用的连接数据库的。、
注意一点:本地正常,服务器上不正常。要是清空了,本地一样也有问题。

奇怪的问题,没有解决。
不管了,准备散分。。。

我今天也遇到了同样的问题。。PDO执行select查询导致apache直接断开,查询了PHP log和apche log都没有错误反馈。。但是执行UPDATE/INSERT没有问题,再测试发现执行select a from table可以,但是select a,b from table就立马挂掉,不知道什么原因。

我今天也遇到了同样的问题。。PDO执行select查询导致apache直接断开,查询了PHP log和apche log都没有错误反馈。。但是执行UPDATE/INSERT没有问题,再测试发现执行select a from table可以,但是select a,b from table就立马挂掉,不知道什么原因。 估计是硬伤了,以后不用这玩意了。结帖啦。。。。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

616

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

194

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

91

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

20

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

54

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

29

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

15

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

598

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

56

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号