Heim  >  Artikel  >  Backend-Entwicklung  >  替毛PDO查询过程会导致服务器断开

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

WBOY
WBOYOriginal
2016-06-13 11:50:58773Durchsuche

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

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

跟踪了半天,发现执行到$stmt->execute();的时候就会出现这样的问题
而奇怪的是,同个页面另一个函数却正常:
      $sql = "SELECT code, client_id, redirect_uri, expires, scope FROM auth_codes WHERE code = :code";<br />      $stmt = $this->db->prepare($sql);<br />      $stmt->bindParam(":code", $code, PDO::PARAM_STR);<br />      $stmt->execute();<br />


经过调试,参数里的数据没一点问题,改成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);
------解决方案--------------------
你总是得贴出错误信息的!
另外,如果你的 php 版本低于 5.3 的话,建议还是不要用 PDO(总是有些莫名其妙的错误的)
------解决方案--------------------
贴全代码,肯定有错误。
------解决方案--------------------
SELECT client_id, expires, scope FROM tokens WHERE oauth_token = :oauth_token

直接拿sql放到mysql编辑器执行试试。
------解决方案--------------------

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

这不是查看phpinfo()就可以看得到?
------解决方案--------------------
检查代码里有没有$this->db=NULL;
是不是清空了?
------解决方案--------------------
你有客户端吧,客户端总会给你打印出一些东西的,例如

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

PDO 我碰见过如果用长连接 会导致一些网页直接挂掉。
------解决方案--------------------
我今天也遇到了同样的问题。。PDO执行select查询导致apache直接断开,查询了PHP log和apche log都没有错误反馈。。但是执行UPDATE/INSERT没有问题,再测试发现执行select a from table可以,但是select a,b from table就立马挂掉,不知道什么原因。
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn