>  기사  >  백엔드 개발  >  PDO:exec()返回值的有关问题

PDO:exec()返回值的有关问题

WBOY
WBOY원래의
2016-06-13 13:36:501313검색

PDO::exec()返回值的问题。
//设置脚本运行时间为不限制
set_time_limit(0);

//用PDO创建pgsql连接
try {
$pgLink = new PDO('pgsql:host=localhost port=5432 dbname=db2 user=root password=111111');
}catch(Exception $e) {
echo $e->getMessage();
}

//定义SQL修改语句
$sql = "UPDATE trade.membership SET gender=1, birth_type=0, name='wsy', birthday='2011-01-01', email='', join_date='2011-01-02', status=1, address='aaaa',id_number='25454', postcode='100031', phone='666', type_id=1 WHERE mobile='110';";

//执行SQL语句
$result = $pgLink->exec($sql);

//输出SQL结果
echo $result.'  '.$sql;

输出结果:
1 UPDATE trade.membership SET gender=1, birth_type=0, name='wsy', birthday='2011-01-01', email='', join_date='2011-01-02', status=1, address='aaaa', id_number='25454', postcode='100031', phone='666', type_id=1 WHERE mobile='110';

问题是这样:
这个表里压根就没有mobile='110'这一行,将$sql语句拿到本地SQL服务器上运行也是“0条影响行数”。
但在程序里的结果为什么是“1”?PDO::exec()的输出结果不应该是增删改的受影响行数吗?

------解决方案--------------------
这个应该是PDO的一个BUG,用预处理做然后用PDO::rowCount()可以正确处理。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.