@@ -1633,6 +1633,17 @@ static PHP_METHOD(PDOStatement, setAttribute)
1633
1633
1634
1634
/* {{{ proto mixed PDOStatement::getAttribute(long attribute)
1635
1635
Get an attribute */
1636
+
1637
+ static int generic_stmt_attr_get (pdo_stmt_t * stmt , zval * return_value , long attr )
1638
+ {
1639
+ switch (attr ) {
1640
+ case PDO_ATTR_EMULATE_PREPARES :
1641
+ RETVAL_BOOL (stmt -> supports_placeholders == PDO_PLACEHOLDER_NONE );
1642
+ return 1 ;
1643
+ }
1644
+ return 0 ;
1645
+ }
1646
+
1636
1647
static PHP_METHOD (PDOStatement , getAttribute )
1637
1648
{
1638
1649
long attr ;
@@ -1643,8 +1654,12 @@ static PHP_METHOD(PDOStatement, getAttribute)
1643
1654
}
1644
1655
1645
1656
if (!stmt -> methods -> get_attribute ) {
1646
- pdo_raise_impl_error (stmt -> dbh , stmt , "IM001" , "This driver doesn't support getting attributes" TSRMLS_CC );
1647
- RETURN_FALSE ;
1657
+ if (!generic_stmt_attr_get (stmt , return_value , attr )) {
1658
+ pdo_raise_impl_error (stmt -> dbh , stmt , "IM001" ,
1659
+ "This driver doesn't support getting attributes" TSRMLS_CC );
1660
+ RETURN_FALSE ;
1661
+ }
1662
+ return ;
1648
1663
}
1649
1664
1650
1665
PDO_STMT_CLEAR_ERR ();
@@ -1654,9 +1669,13 @@ static PHP_METHOD(PDOStatement, getAttribute)
1654
1669
RETURN_FALSE ;
1655
1670
1656
1671
case 0 :
1657
- /* XXX: should do something better here */
1658
- pdo_raise_impl_error (stmt -> dbh , stmt , "IM001" , "driver doesn't support getting that attribute" TSRMLS_CC );
1659
- RETURN_FALSE ;
1672
+ if (!generic_stmt_attr_get (stmt , return_value , attr )) {
1673
+ /* XXX: should do something better here */
1674
+ pdo_raise_impl_error (stmt -> dbh , stmt , "IM001" ,
1675
+ "driver doesn't support getting that attribute" TSRMLS_CC );
1676
+ RETURN_FALSE ;
1677
+ }
1678
+ return ;
1660
1679
1661
1680
default :
1662
1681
return ;
0 commit comments