xref: /PHP-7.4/ext/oci8/tests/bind_rowid.phpt (revision 26dfce7f)
1--TEST--
2Test ROWID bind
3--SKIPIF--
4<?php if (!extension_loaded('oci8')) die("skip no oci8 extension"); ?>
5--FILE--
6<?php
7
8require(__DIR__."/connect.inc");
9
10function do_query($c)
11{
12	$s = oci_parse($c, 'select address from rid_tab order by id');
13	$id = 1;
14	oci_execute($s, OCI_DEFAULT);
15	while ($row = oci_fetch_array($s, OCI_ASSOC+OCI_RETURN_NULLS)) {
16		var_dump($row);
17	}
18}
19
20$stmtarray = array(
21	"drop table rid_tab",
22	"create table rid_tab (id number, address varchar2(40))",
23	"insert into rid_tab (id, address) values (1, 'original text #1')",
24	"insert into rid_tab (id, address) values (2, 'original text #2')"
25);
26
27oci8_test_sql_execute($c, $stmtarray);
28
29echo "Initial Data\n";
30do_query($c);
31
32$s = oci_parse($c, 'select rowid, address from rid_tab where id = :l_bv for update');
33$id = 1;
34oci_bind_by_name($s, ':l_bv', $id);
35oci_execute($s, OCI_DEFAULT);
36$row = oci_fetch_array($s, OCI_ASSOC+OCI_RETURN_NULLS);
37
38$rid = $row['ROWID'];
39$addr = $row['ADDRESS'];
40
41$addr = 'Some new text';
42
43// Save changes
44$s = oci_parse($c,'update rid_tab set address = :a_bv where rowid = :r_bv');
45oci_bind_by_name($s, ':r_bv', $rid, -1, OCI_B_ROWID);
46oci_bind_by_name($s, ':a_bv', $addr);
47oci_execute($s);
48
49echo "Verify Change\n";
50do_query($c);
51
52// Cleanup
53
54$stmtarray = array(
55    "drop table rid_tab"
56);
57
58oci8_test_sql_execute($c, $stmtarray);
59
60echo "Done\n";
61
62?>
63--EXPECT--
64Initial Data
65array(1) {
66  ["ADDRESS"]=>
67  string(16) "original text #1"
68}
69array(1) {
70  ["ADDRESS"]=>
71  string(16) "original text #2"
72}
73Verify Change
74array(1) {
75  ["ADDRESS"]=>
76  string(13) "Some new text"
77}
78array(1) {
79  ["ADDRESS"]=>
80  string(16) "original text #2"
81}
82Done
83