PHP连接PostgreSQL的问题

WBOY
풀어 주다: 2016-06-23 13:53:13
원래의
899명이 탐색했습니다.

这段时间正在学PostgreSQL,我用的是PDO方式来操作,连接、增删改查都可以正常操作,但是发现所有出错的语句都不会报错,比如在mysql中一条错误sql会直接中断并输出错误信息和错误号,但是postgresql只是给结果赋个false值,没有任何信息和提示,都不知道是不是因为sql语法的问题,还有就是在一个事务里,有出错的sql执行,最终居然也执行成功了。。。没有catch出任何错误。
不清楚是我哪里配置有问题或者操作方式不对,希望有了解的朋友可以点拨一下,谢谢!


回复讨论(解决方案)

PostgreSQL 不会给出错误号和错误信息?这显然是不可能的,只不过你不知道如何检查是否出错了而已
PDO 用两种提供错误信息的方式:
1、通过 errorInfo 方法返回一个数组
array(
  0 => ANSI SQL 标准的 SQLSTATE错误代码
  1 => 所用数据库自己定义的错误代码
  2 => 所用数据库自己定义的错误信息
}
你可通过检查第一项知否全 0 来判断是否有错
这是 PDO 默认的方式
2、通过设置属性项 PDO::ATTR_ERRMODE  的值为 PDO::ERRMODE_EXCEPTION 来指定使用异常抛出机制

	try {		//在这里做各种数据库操作	} catch (PDOException $e) {		die( "Error!: " . $e->getMessage() . "\n" );	}
로그인 후 복사
로그인 후 복사
其实手册中说的很清楚了,只是你没有认真阅读而已

PostgreSQL 不会给出错误号和错误信息?这显然是不可能的,只不过你不知道如何检查是否出错了而已
PDO 用两种提供错误信息的方式:
1、通过 errorInfo 方法返回一个数组
array(
0 => ANSI SQL 标准的 SQLSTATE错误代码
1 => 所用数据库自己定义的错误代码
2 => 所用数据库自己定义的错误信息
}
你可通过检查第一项知否全 0 来判断是否有错
这是 PDO 默认的方式
2、通过设置属性项 PDO::ATTR_ERRMODE 的值为 PDO::ERRMODE_EXCEPTION 来指定使用异常抛出机制

	try {		//在这里做各种数据库操作	} catch (PDOException $e) {		die( "Error!: " . $e->getMessage() . "\n" );	}
로그인 후 복사
로그인 후 복사
其实手册中说的很清楚了,只是你没有认真阅读而已


真应该把手册细致读一遍,非常感谢版主
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!