Skip to content

Commit 5bb41fa

Browse files
committed
Promote PDORow property write to Error
1 parent 6f76817 commit 5bb41fa

File tree

2 files changed

+30
-4
lines changed

2 files changed

+30
-4
lines changed

ext/pdo/pdo_stmt.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2356,13 +2356,13 @@ static zval *row_dim_read(zend_object *object, zval *member, int type, zval *rv)
23562356

23572357
static zval *row_prop_write(zend_object *object, zend_string *name, zval *value, void **cache_slot)
23582358
{
2359-
php_error_docref(NULL, E_WARNING, "This PDORow is not from a writable result set");
2359+
zend_throw_error(NULL, "Cannot write to PDORow property");
23602360
return value;
23612361
}
23622362

23632363
static void row_dim_write(zend_object *object, zval *member, zval *value)
23642364
{
2365-
php_error_docref(NULL, E_WARNING, "This PDORow is not from a writable result set");
2365+
zend_throw_error(NULL, "Cannot write to PDORow offset");
23662366
}
23672367

23682368
static int row_prop_exists(zend_object *object, zend_string *name, int check_empty, void **cache_slot)
@@ -2439,12 +2439,12 @@ static int row_dim_exists(zend_object *object, zval *member, int check_empty)
24392439

24402440
static void row_prop_delete(zend_object *object, zend_string *offset, void **cache_slot)
24412441
{
2442-
php_error_docref(NULL, E_WARNING, "Cannot delete properties from a PDORow");
2442+
zend_throw_error(NULL, "Cannot unset PDORow property");
24432443
}
24442444

24452445
static void row_dim_delete(zend_object *object, zval *offset)
24462446
{
2447-
php_error_docref(NULL, E_WARNING, "Cannot delete properties from a PDORow");
2447+
zend_throw_error(NULL, "Cannot unset PDORow offset");
24482448
}
24492449

24502450
static HashTable *row_get_properties_for(zend_object *object, zend_prop_purpose purpose)

ext/pdo/tests/pdo_035.phpt

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,33 @@ $result = $stmt->fetch(PDO::FETCH_LAZY);
1616

1717
echo get_class($result), "\n";
1818
var_dump(get_parent_class($result));
19+
20+
try {
21+
$result->foo = 1;
22+
} catch (Error $e) {
23+
echo $e->getMessage(), "\n";
24+
}
25+
try {
26+
$result[0] = 1;
27+
} catch (Error $e) {
28+
echo $e->getMessage(), "\n";
29+
}
30+
try {
31+
unset($result->foo);
32+
} catch (Error $e) {
33+
echo $e->getMessage(), "\n";
34+
}
35+
try {
36+
unset($result[0]);
37+
} catch (Error $e) {
38+
echo $e->getMessage(), "\n";
39+
}
40+
1941
?>
2042
--EXPECT--
2143
PDORow
2244
bool(false)
45+
Cannot write to PDORow property
46+
Cannot write to PDORow offset
47+
Cannot unset PDORow property
48+
Cannot unset PDORow offset

0 commit comments

Comments
 (0)