summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xext/pdo/pdo.c2
-rwxr-xr-xext/pdo/pdo_stmt.c10
2 files changed, 11 insertions, 1 deletions
diff --git a/ext/pdo/pdo.c b/ext/pdo/pdo.c
index 05e1886ef2..748c08d9ff 100755
--- a/ext/pdo/pdo.c
+++ b/ext/pdo/pdo.c
@@ -282,7 +282,9 @@ PHP_MINIT_FUNCTION(pdo)
REGISTER_LONG_CONSTANT("PDO_FETCH_GROUP",(long)PDO_FETCH_GROUP, CONST_CS|CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("PDO_FETCH_UNIQUE",(long)PDO_FETCH_UNIQUE, CONST_CS|CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("PDO_FETCH_CLASSTYPE",(long)PDO_FETCH_CLASSTYPE, CONST_CS|CONST_PERSISTENT);
+#if PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION < 1
REGISTER_LONG_CONSTANT("PDO_FETCH_SERIALIZE",(long)PDO_FETCH_SERIALIZE, CONST_CS|CONST_PERSISTENT);
+#endif
REGISTER_LONG_CONSTANT("PDO_ATTR_AUTOCOMMIT", (long)PDO_ATTR_AUTOCOMMIT, CONST_CS|CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("PDO_ATTR_PREFETCH", (long)PDO_ATTR_PREFETCH, CONST_CS|CONST_PERSISTENT);
diff --git a/ext/pdo/pdo_stmt.c b/ext/pdo/pdo_stmt.c
index ed8c8e1f1c..ab8afd37dd 100755
--- a/ext/pdo/pdo_stmt.c
+++ b/ext/pdo/pdo_stmt.c
@@ -865,7 +865,8 @@ static int do_fetch(pdo_stmt_t *stmt, int do_bind, zval *return_value,
return 0;
}
PHP_VAR_UNSERIALIZE_DESTROY(var_hash);
-#else
+#endif
+#if PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION < 1
if (!ce->unserialize) {
zend_throw_exception_ex(pdo_exception_ce, 0 TSRMLS_CC, "Class %s cannot be unserialized", ce->name);
return 0;
@@ -971,6 +972,13 @@ static int pdo_stmt_verify_mode(pdo_stmt_t *stmt, int mode, int fetch_all TSRMLS
mode = stmt->default_fetch_type & ~PDO_FETCH_FLAGS;
}
+#if PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION < 1
+ if ((flags & PDO_FETCH_SERIALIZE) == PDO_FETCH_SERIALIZE) {
+ zend_throw_exception(pdo_exception_ce, "Fetch flag PDO_FETCH_SERIALIZE only allowed in PHP version 5.1 and higher", 0 TSRMLS_CC);
+ return 0;
+ }
+#endif
+
switch(mode) {
case PDO_FETCH_FUNC:
if (!fetch_all) {