Commit Graph

98 Commits

Author SHA1 Message Date
Wez Furlong
35b00ffdab Synopsis:
PDOStatement::setFetchMode()
	reset default fetch() mode for a statement to PDO_FETCH_BOTH

PDOStatement::setFetchMode(PDO_FETCH_NUM)
PDOStatement::setFetchMode(PDO_FETCH_ASSOC)
PDOStatement::setFetchMode(PDO_FETCH_BOTH)
PDOStatement::setFetchMode(PDO_FETCH_OBJ)
	set default fetch() mode for a statement.

PDOStatement::setFetchMode(PDO_FETCH_COLUMN, int colno)
	set default fetch() mode to retrieve colno-th column on each fetch() call.

PDOStatement::setFetchMode(PDO_FETCH_CLASS, string classname [, array ctor args])
	set default fetch() mode to create an instance of classname,
	calling it's ctor, passing the optional ctor args.
	The names of the columns in the result set will be used as property names on
	the object instance.  PPP rules apply.

	[NOTE: calling ctor is not yet implemented]
	[TODO: this might crash PHP for persistent PDO handles]

PDOStatement::setFetchMode(PDO_FETCH_INTO, object obj)
	Similar to PDO_FETCH_CLASS, except that each iteration will update the
	supplied object properties.

	[TODO: this might crash PHP for persistent PDO handles]

The default fetch() mode is used when no parameters are passed to
PDOStatement::fetch().  When using a statement in an iterator context,
PDOStatement::fetch() is called implicitly on each iteration.

object PDO::queryAndIterate(string sql, <PDOStatement::setFetchMode args>)
	This is semantically equivalent to:

	$stmt = $pdo->prepare($sql);
	$stmt->execute();
	$stmt->setFetchMode($args);
	return $stmt;


Example/Intended usage:

/* fetch an array with numeric and string keys */
foreach ($pdo->queryAndIterate("select NAME, VALUE from test") as $row) {
	debug_zval_dump($row);
}

/* fetch the value of column 1 into $row on each iteration */
foreach ($pdo->queryAndIterate("select NAME, VALUE from test",
		PDO_FETCH_COLUMN, 1) as $row) {
	debug_zval_dump($row); // string(3) "foo"
}

/* create a new instance of class Foo on each iteration */
foreach ($pdo->queryAndIterate("select NAME, VALUE from test",
		PDO_FETCH_CLASS, 'Foo') as $row) {
	debug_zval_dump($row);
/*
	Object(Foo)#4 (2) refcount(2){
		["NAME"]=>
  		string(12) "foo220051429" refcount(2)
		["VALUE"]=>
		string(12) "bar789825748" refcount(2)
	}
*/
}

etc.
2004-10-27 10:26:27 +00:00
Wez Furlong
eb0cd48d60 Add rough cut at fetching meta data. 2004-09-26 20:45:44 +00:00
Wez Furlong
0d002664fb Implement empty-string-to-null conversion option for oracle compat.
This can be enabled using:
	$dbh->setAttribute(PDO_ATTR_ORACLE_NULLS, true);
2004-07-19 09:35:36 +00:00
Ilia Alshanetsky
905fbfd85e Added missing constant and correct bound column retrieval. When bound
columns are specified only return status (TRUE/FALSE) indicator.
2004-07-12 20:12:39 +00:00
Ilia Alshanetsky
41b639fffe Fixed function proto. 2004-07-09 17:49:08 +00:00
Ilia Alshanetsky
2ba792cd0b Don't use alloca() where it can reached by the users. 2004-07-05 21:16:29 +00:00
Ard Biesheuvel
f91395898c Un-revert param index fix 2004-06-15 10:22:21 +00:00
Ard Biesheuvel
e48d127244 Revert (at Wez's request) 2004-06-15 10:06:41 +00:00
Ard Biesheuvel
1d7a4ed492 Report param binding error 2004-06-13 22:09:54 +00:00
Ard Biesheuvel
50ac5db2b4 Added double param type
Added param struct initialiser
Reversed param parsing order (long <=> string)
2004-06-12 02:35:34 +00:00
Wez Furlong
d2a8d5a80f get/set attributes for statements 2004-05-25 18:32:48 +00:00
Wez Furlong
7a87af3321 Some definitions for cursors.
Define a mechanism for driver-specific attributes.
Use a refcount for the stmt structure.
2004-05-25 17:43:24 +00:00
Ilia Alshanetsky
cf75eb8a6f Cleanup. 2004-05-25 16:49:32 +00:00
Ilia Alshanetsky
402de24fc4 One more leak down. 2004-05-25 16:40:54 +00:00
Ilia Alshanetsky
b7ecaca17f More leak fixes. 2004-05-25 16:38:28 +00:00
Ilia Alshanetsky
0c762dff03 More possible leak fixes (Thanks Tony). 2004-05-25 14:47:22 +00:00
Ilia Alshanetsky
9280b88a8c One more memory leak. 2004-05-25 14:35:49 +00:00
Ilia Alshanetsky
d782abf416 More leak fixes. 2004-05-25 14:30:07 +00:00
George Schlossnagle
4d01a5c2d1 ok, apprently we _don't_ want to count the nulls. 2004-05-21 22:24:20 +00:00
George Schlossnagle
1ee89e1bea remove debugging 2004-05-21 22:20:25 +00:00
George Schlossnagle
518cf77f32 fix fubar'd emulated bindings 2004-05-21 22:19:33 +00:00
Wez Furlong
d8d7dd7e14 Allow lazy fetch to work with numeric offsets.
Fix named parameters...
2004-05-21 14:31:51 +00:00
Wez Furlong
8f5b212612 store the name length in the same manner as it is stored in zvals 2004-05-21 14:14:32 +00:00
Wez Furlong
ed83c5bee5 Tidy up placeholder flags 2004-05-21 14:09:51 +00:00
Wez Furlong
bf48daa8d5 Version 1 of PDO_FETCH_LAZY 2004-05-21 13:26:58 +00:00
Wez Furlong
f0a001a953 Implement case folding of column names as a portability option. 2004-05-20 22:28:53 +00:00
Wez Furlong
e0ac3f66ae Implement PDO_FETCH_OBJ
# todo (after initial release) - specify a particular class, reuse existing
# objects etc.
2004-05-20 22:06:42 +00:00
George Schlossnagle
e155ad208a sigh... need to include the null byte in hash keys 2004-05-20 19:19:04 +00:00
George Schlossnagle
d16625b803 Support ? as a bind in emulated prepares
Throw informative error when pdo_parse_param fails
2004-05-20 17:56:09 +00:00
Wez Furlong
04ccc0134d Add methods for error handling 2004-05-20 17:22:13 +00:00
Wez Furlong
e7c72f8455 First cut at a "unified" error handling API. The main thing that is missing
currently is a switch in the dbh to indicate what to do with the errors.
2004-05-20 00:05:22 +00:00
Ilia Alshanetsky
c98a99c263 Added fetchAll and fetchSingle methods for data retrieval. 2004-05-19 20:38:53 +00:00
Ilia Alshanetsky
741e31bdf3 Removed unused vars. 2004-05-19 13:27:54 +00:00
Sebastian Bergmann
681ded13bc ZTS fix. 2004-05-19 09:23:15 +00:00
Ilia Alshanetsky
aecad9e37b Fixed build. 2004-05-18 22:45:53 +00:00
Ilia Alshanetsky
cb1239a338 Allow static builds. 2004-05-18 22:31:13 +00:00
George Schlossnagle
f02fb4ada4 should be a strcmp, not a strncmp, thanks, wez 2004-05-18 20:57:19 +00:00
George Schlossnagle
8233053d24 was leaking query_string's 2004-05-18 20:33:30 +00:00
George Schlossnagle
5f4cfcb009 support the read-only property 'queryString' 2004-05-18 20:26:24 +00:00
Wez Furlong
2a9fa24458 Tweaks for win32 2004-05-18 15:57:46 +00:00
George Schlossnagle
a97e1a6646 handle binding/quoting of queries for drivers with emulated prepares 2004-05-18 15:19:31 +00:00
Wez Furlong
c9f736ab6e Skeleton for emulated prepare() 2004-05-18 08:59:27 +00:00
Wez Furlong
940c896e15 Quoting here leads to problems with databases that really support bound parameters.
We should do this conditionally based on the emulate_prepare flag.
2004-05-18 08:45:28 +00:00
George Schlossnagle
2e36e9d06d only rewrite tmp if quoter returns true 2004-05-18 05:34:52 +00:00
George Schlossnagle
636cc3e1dc auto-quote values before binding them in at execute time 2004-05-18 05:31:01 +00:00
Wez Furlong
dd84731577 Allow PDO to build as a self-contained extension.
Install headers so that other self-contained extensions may them.
2004-05-17 18:13:03 +00:00
Wez Furlong
79c513db96 Some pedantic fixes for gcc. 2004-05-17 17:00:35 +00:00
Wez Furlong
684be9cf36 Hello PDO.
Still more to come.  Give it a couple of days before starting to write drivers
for the other databases; a few things might change, so I'd like to coordinate
that, but in a couple of days.
2004-05-17 15:41:51 +00:00