Update of /cvsroot/mantisbt/mantisbt/core/adodb/tests
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20885/tests
Added Files:
benchmark.php client.php pdo.php test-datadict.php
test-perf.php test-pgblob.php test-php5.php test-xmlschema.php
test.php test2.php test3.php test4.php test5.php
test_rs_array.php testcache.php testdatabases.inc.php
testgenid.php testmssql.php testoci8.php testoci8cursor.php
testpaging.php testpear.php testsessions.php time.php
tmssql.php xmlschema.xml
Log Message:
Upgrading ADODB
--- NEW FILE: testoci8cursor.php ---
<?php
/*
V4.54 5 Nov 2004 (c) 2000-2004 John Lim
(jlim-l15XFKl8ZeYZ+IcD6AW/HA@xxxxxxxxxxxxxxxx). All rights reserved.
Released under both BSD license and Lesser GPL library license.
Whenever there is any discrepancy between the two licenses,
the BSD license will take precedence.
Set tabs to 4 for best viewing.
Latest version is available at http://adodb.sourceforge.net
*/
/*
Test for Oracle Variable Cursors, which are treated as ADOdb recordsets.
We have 2 examples. The first shows us using the Parameter statement.
The second shows us using the new ExecuteCursor($sql, $cursorName)
function.
------------------------------------------------------------------
-- TEST PACKAGE YOU NEED TO INSTALL ON ORACLE - run from sql*plus
------------------------------------------------------------------
-- TEST PACKAGE
CREATE OR REPLACE PACKAGE adodb AS
TYPE TabType IS REF CURSOR RETURN tab%ROWTYPE;
PROCEDURE open_tab (tabcursor IN OUT TabType,tablenames in varchar);
PROCEDURE data_out(input IN varchar, output OUT varchar);
procedure myproc (p1 in number, p2 out number);
END adodb;
/
CREATE OR REPLACE PACKAGE BODY adodb AS
PROCEDURE open_tab (tabcursor IN OUT TabType,tablenames in varchar) IS
BEGIN
OPEN tabcursor FOR SELECT * FROM tab where tname like
tablenames;
END open_tab;
PROCEDURE data_out(input IN varchar, output OUT varchar) IS
BEGIN
output := 'Cinta Hati '||input;
END;
procedure myproc (p1 in number, p2 out number) as
begin
p2 := p1;
end;
END adodb;
/
------------------------------------------------------------------
-- END PACKAGE
------------------------------------------------------------------
*/
include('../adodb.inc.php');
include('../tohtml.inc.php');
error_reporting(E_ALL);
$db = ADONewConnection('oci8');
$db->PConnect('','scott','natsoft');
$db->debug = 99;
/*
*/
define('MYNUM',5);
$rs = $db->ExecuteCursor("BEGIN adodb.open_tab(:RS,'A%'); END;");
if ($rs && !$rs->EOF) {
print "Test 1 RowCount: ".$rs->RecordCount()."<p>";
} else {
print "<b>Error in using Cursor Variables 1</b><p>";
}
print "<h4>Testing Stored Procedures for oci8</h4>";
$stid = $db->PrepareSP('BEGIN adodb.myproc('.MYNUM.', :myov); END;');
$db->OutParameter($stid, $myov, 'myov');
$db->Execute($stid);
if ($myov != MYNUM) print "<p><b>Error with myproc</b></p>";
$stmt = $db->PrepareSP("BEGIN adodb.data_out(:a1, :a2); END;",true);
$a1 = 'Malaysia';
//$a2 = ''; # a2 doesn't even need to be defined!
$db->InParameter($stmt,$a1,'a1');
$db->OutParameter($stmt,$a2,'a2');
$rs = $db->Execute($stmt);
if ($rs) {
if ($a2 !== 'Cinta Hati Malaysia') print "<b>Stored Procedure
Error: a2 = $a2</b><p>";
else echo "OK: a2=$a2<p>";
} else {
print "<b>Error in using Stored Procedure IN/Out
Variables</b><p>";
}
$tname = 'A%';
$stmt = $db->PrepareSP('select * from tab where tname like :tablename');
$db->Parameter($stmt,$tname,'tablename');
$rs = $db->Execute($stmt);
rs2html($rs);
?>
--- NEW FILE: testsessions.php ---
<?php
/*
V4.54 5 Nov 2004 (c) 2000-2004 John Lim
(jlim-l15XFKl8ZeYZ+IcD6AW/HA@xxxxxxxxxxxxxxxx). All rights reserved.
Released under both BSD license and Lesser GPL library license.
Whenever there is any discrepancy between the two licenses,
the BSD license will take precedence.
Set tabs to 4 for best viewing.
Latest version is available at http://adodb.sourceforge.net
*/
function NotifyExpire($ref,$key)
{
print "<p><b>Notify Expiring=$ref, sessionkey=$key</b></p>";
}
//-------------------------------------------------------------------
#### CONNECTION
if (1) {
$ADODB_SESSION_DRIVER='oci8';
$ADODB_SESSION_CONNECT='';
$ADODB_SESSION_USER ='scott';
$ADODB_SESSION_PWD ='natsoft';
$ADODB_SESSION_DB ='';
} else {
$ADODB_SESSION_DRIVER='mysql';
$ADODB_SESSION_CONNECT='localhost';
$ADODB_SESSION_USER ='root';
$ADODB_SESSION_PWD ='';
$ADODB_SESSION_DB ='xphplens_2';
}
### TURN DEBUGGING ON
$ADODB_SESS_DEBUG = true;
#### SETUP NOTIFICATION
$USER = 'JLIM'.rand();
$ADODB_SESSION_EXPIRE_NOTIFY = array('USER','NotifyExpire');
#### INIT
ob_start();
error_reporting(E_ALL);
include('../session/adodb-cryptsession.php');
session_start();
### SETUP SESSION VARIABLES
$HTTP_SESSION_VARS['MONKEY'] = array('1','abc',44.41);
if (!isset($HTTP_GET_VARS['nochange'])) @$HTTP_SESSION_VARS['AVAR'] +=
1;
### START DISPLAY
print "<h3>PHP ".PHP_VERSION."</h3>";
print
"<p><b>\$HTTP_SESSION_VARS['AVAR']={$HTTP_SESSION_VARS['AVAR']}</b></p>";
print "<hr> <b>Cookies</b>: ";
print_r($HTTP_COOKIE_VARS);
### RANDOMLY PERFORM Garbage Collection
if (rand() % 10 == 0) {
print "<hr><p><b>Garbage Collection</b></p>";
adodb_sess_gc(10);
print "<p>Random session destroy</p>";
session_destroy();
}
?>
--- NEW FILE: test-pgblob.php ---
<?php
function getmicrotime()
{
$t = microtime();
$t = explode(' ',$t);
return (float)$t[1]+ (float)$t[0];
}
function doloop()
{
global $db,$MAX;
$sql = "select id,firstname,lastname from adoxyz where
firstname not like ? and lastname not like ? and id=?";
$offset = 0;
/*$sql = "select * from juris9.employee join juris9.emp_perf_plan on
epp_empkey = emp_id
where emp_name not like ? and emp_name not like ? and
emp_id=28000+?";
$offset = 28000;*/
for ($i=1; $i <= $MAX; $i++) {
$db->Param(false);
$x = (rand() % 10) + 1;
$db->debug= ($i==1);
$id = $db->GetOne($sql,
array('Z%','Z%',$x));
if($id != $offset+$x) {
print "<p>Error at $x";
break;
}
}
}
include_once('../adodb.inc.php');
$db = NewADOConnection('postgres7');
$db->PConnect('localhost','tester','test','test') || die("failed connection");
$enc =
"GIF89a%01%00%01%00%80%FF%00%C0%C0%C0%00%00%00%21%F9%04%01%00%00%00%00%2C%00%00%00%00%01%00%01%00%00%01%012%00%3Bt_clear.gif%0D";
$val = rawurldecode($enc);
$MAX = 1000;
adodb_pr($db->ServerInfo());
echo "<h4>Testing PREPARE/EXECUTE PLAN</h4>";
$db->_bindInputArray = true; // requires postgresql 7.3+ and ability to modify
database
$t = getmicrotime();
doloop();
echo '<p>',$MAX,' times, with plan=',getmicrotime() - $t,'</p>';
$db->_bindInputArray = false;
$t = getmicrotime();
doloop();
echo '<p>',$MAX,' times, no plan=',getmicrotime() - $t,'</p>';
echo "<h4>Testing UPDATEBLOB</h4>";
$db->debug=1;
### TEST BEGINS
$db->Execute("insert into photos (id,name) values(9999,'dot.gif')");
$db->UpdateBlob('photos','photo',$val,'id=9999');
$v = $db->GetOne('select photo from photos where id=9999');
### CLEANUP
$db->Execute("delete from photos where id=9999");
### VALIDATION
if ($v !== $val) echo "<b>*** ERROR: Inserted value does not match downloaded
val<b>";
else echo "<b>*** OK: Passed</b>";
echo "<pre>";
echo "INSERTED: ", $enc;
echo "<hr>";
echo"RETURNED: ", rawurlencode($v);
echo "<hr><p>";
echo "INSERTED: ", $val;
echo "<hr>";
echo "RETURNED: ", $v;
?>
--- NEW FILE: test_rs_array.php ---
<?php
include_once('../adodb.inc.php');
$rs = new ADORecordSet_array();
$array = array(
array ('Name', 'Age'),
array ('John', '12'),
array ('Jill', '8'),
array ('Bill', '49')
);
$typearr = array('C','I');
$rs->InitArray($array,$typearr);
while (!$rs->EOF) {
print_r($rs->fields);echo "<br>";
$rs->MoveNext();
}
echo "<hr> 1 Seek<br>";
$rs->Move(1);
while (!$rs->EOF) {
print_r($rs->fields);echo "<br>";
$rs->MoveNext();
}
echo "<hr> 2 Seek<br>";
$rs->Move(2);
while (!$rs->EOF) {
print_r($rs->fields);echo "<br>";
$rs->MoveNext();
}
echo "<hr> 3 Seek<br>";
$rs->Move(3);
while (!$rs->EOF) {
print_r($rs->fields);echo "<br>";
$rs->MoveNext();
}
die();
?>
--- NEW FILE: test-xmlschema.php ---
<?PHP
// V4.50 6 July 2004
error_reporting(E_ALL);
include_once( "../adodb.inc.php" );
include_once( "../adodb-xmlschema.inc.php" );
// To build the schema, start by creating a normal ADOdb connection:
$db = ADONewConnection( 'mysql' );
$db->Connect( 'localhost', 'root', '', 'schematest' );
// To create a schema object and build the query array.
$schema = new adoSchema( $db );
// To upgrade an existing schema object, use the following
// To upgrade an existing database to the provided schema,
// uncomment the following line:
#$schema->upgradeSchema();
print "<b>SQL to build xmlschema.xml</b>:\n<pre>";
// Build the SQL array
$sql = $schema->ParseSchema( "xmlschema.xml" );
print_r( $sql );
print "</pre>\n";
// Execute the SQL on the database
//$result = $schema->ExecuteSchema( $sql );
// Finally, clean up after the XML parser
// (PHP won't do this for you!)
//$schema->Destroy();
$db2 = ADONewConnection('mssql');
$db2->Connect('localhost','sa','natsoft','northwind') || die("Fail 2");
$db2->Execute("drop table simple_table");
print "<b>SQL to build xmlschema-mssql.xml</b>:\n<pre>";
$schema = new adoSchema( $db2 );
$sql = $schema->ParseSchema( "xmlschema-mssql.xml" );
print_r( $sql );
print "</pre>\n";
$db2->debug=1;
$db2->Execute($sql[0]);
?>
--- NEW FILE: test.php ---
<?php
/*
V4.54 5 Nov 2004 (c) 2000-2004 John Lim
(jlim-l15XFKl8ZeYZ+IcD6AW/HA@xxxxxxxxxxxxxxxx). All rights reserved.
Released under both BSD license and Lesser GPL library license.
Whenever there is any discrepancy between the two licenses,
the BSD license will take precedence.
Set tabs to 4 for best viewing.
Latest version is available at http://adodb.sourceforge.net
*/
error_reporting(E_ALL);
$ADODB_FLUSH = true;
define('ADODB_ASSOC_CASE',0);
if (PHP_VERSION < 5) include_once('../adodb-pear.inc.php');
//--------------------------------------------------------------------------------------
[...1563 lines suppressed...]
There is also support for Sybase, PostgreSQL.</p>
For the latest version of ADODB, visit <a
href=http://adodb.sourceforge.net/>adodb.sourceforge.net</a>.</p>
Test <a href=test4.php>GetInsertSQL/GetUpdateSQL</a>
<a href=testsessions.php>Sessions</a>
<a href=testpaging.php>Paging</a>
<a href=test-perf.php>Perf Monitor</a><p>
<?php
include('./testdatabases.inc.php');
echo "<br>vers=",ADOConnection::Version();
include_once('../adodb-time.inc.php');
if (isset($_GET['time'])) adodb_date_test();
?>
<p><i>ADODB Database Library (c) 2000-2004 John Lim. All rights reserved.
Released under BSD and LGPL.</i></p>
</body>
</html>
--- NEW FILE: testoci8.php ---
<html>
<body>
<?php
/*
V4.54 5 Nov 2004 (c) 2000-2004 John Lim
(jlim-l15XFKl8ZeYZ+IcD6AW/HA@xxxxxxxxxxxxxxxx). All rights reserved.
Released under both BSD license and Lesser GPL library license.
Whenever there is any discrepancy between the two licenses,
the BSD license will take precedence.
Set tabs to 4 for best viewing.
Latest version is available at http://adodb.sourceforge.net
*/
error_reporting(63);
include("../adodb.inc.php");
include("../tohtml.inc.php");
if (0) {
$db = ADONewConnection('oci8po');
$db->PConnect('','scott','natsoft');
if (!empty($testblob)) {
$varHoldingBlob = 'ABC DEF GEF John TEST';
$num = time()%10240;
// create table atable (id integer, ablob blob);
$db->Execute('insert into ATABLE (id,ablob)
values('.$num.',empty_blob())');
$db->UpdateBlob('ATABLE', 'ablob', $varHoldingBlob, 'id='.$num,
'BLOB');
$rs = &$db->Execute('select * from atable');
if (!$rs) die("Empty RS");
if ($rs->EOF) die("EOF RS");
rs2html($rs);
}
$stmt = $db->Prepare('select * from adoxyz where id=?');
for ($i = 1; $i <= 10; $i++) {
$rs = &$db->Execute(
$stmt,
array($i));
if (!$rs) die("Empty RS");
if ($rs->EOF) die("EOF RS");
rs2html($rs);
}
}
if (1) {
$db = ADONewConnection('oci8');
$db->PConnect('','scott','natsoft');
$db->debug = true;
$db->Execute("delete from emp where ename='John'");
print $db->Affected_Rows().'<BR>';
$stmt = &$db->Prepare('insert into emp (empno, ename) values (:empno,
:ename)');
$rs = $db->Execute($stmt,array('empno'=>4321,'ename'=>'John'));
// prepare not quite ready for prime time
//$rs = $db->Execute($stmt,array('empno'=>3775,'ename'=>'John'));
if (!$rs) die("Empty RS");
$db->setfetchmode(ADODB_FETCH_NUM);
$vv = 'A%';
$stmt = $db->PrepareSP("BEGIN adodb.open_tab2(:rs,:tt); END;",true);
$db->OutParameter($stmt, $cur, 'rs', -1, OCI_B_CURSOR);
$db->OutParameter($stmt, $vv, 'tt');
$rs = $db->Execute($stmt);
while (!$rs->EOF) {
adodb_pr($rs->fields);
$rs->MoveNext();
}
echo " val = $vv";
}
if (0) {
$db = ADONewConnection('odbc_oracle');
if (!$db->PConnect('local_oracle','scott','tiger')) die('fail connect');
$db->debug = true;
$rs = &$db->Execute(
'select * from adoxyz where firstname=? and trim(lastname)=?',
array('first'=>'Caroline','last'=>'Miranda'));
if (!$rs) die("Empty RS");
if ($rs->EOF) die("EOF RS");
rs2html($rs);
}
?>
--- NEW FILE: test-php5.php ---
<?php
/*
V4.54 5 Nov 2004 (c) 2000-2004 John Lim
(jlim-l15XFKl8ZeYZ+IcD6AW/HA@xxxxxxxxxxxxxxxx). All rights reserved.
Released under both BSD license and Lesser GPL library license.
Whenever there is any discrepancy between the two licenses,
the BSD license will take precedence.
Set tabs to 8.
*/
error_reporting(E_ALL);
$path = dirname(__FILE__);
include("$path/../adodb-exceptions.inc.php");
include("$path/../adodb.inc.php");
echo "<h3>PHP ".PHP_VERSION."</h3>\n";
try {
$dbt = 'oci8po';
switch($dbt) {
case 'oci8po':
$db = NewADOConnection("oci8po");
$db->Connect('','scott','natsoft');
break;
default:
case 'mysql':
$db = NewADOConnection("mysql");
$db->Connect('localhost','root','','test');
break;
case 'mysqli':
$db = NewADOConnection("mysqli://root:@localhost/test");
//$db->Connect('localhost','root','','test');
break;
}
$db->debug=1;
$cnt = $db->GetOne("select count(*) from adoxyz where ?<id and
id<?",array(10,20));
$stmt = $db->Prepare("select * from adoxyz where ?<id and id<?");
if (!$stmt) echo $db->ErrorMsg(),"\n";
$rs = $db->Execute($stmt,array(10,20));
$i = 0;
foreach($rs as $v) {
$i += 1;
echo "rec $i: "; adodb_pr($v); adodb_pr($rs->fields);
flush();
}
if ($i != $cnt) die("actual cnt is $i, cnt should be $cnt\n");
$rs = $db->Execute("select bad from badder");
} catch (exception $e) {
adodb_pr($e);
echo "<h3>adodb_backtrace:</h3>\n";
$e = adodb_backtrace($e->gettrace());
}
$rs = $db->Execute("select distinct id, firstname,lastname from adoxyz order by
id");
echo "Result=\n",$rs;
?>
--- NEW FILE: testpaging.php ---
<?php
/*
V4.54 5 Nov 2004 (c) 2000-2004 John Lim
(jlim-l15XFKl8ZeYZ+IcD6AW/HA@xxxxxxxxxxxxxxxx). All rights reserved.
Released under both BSD license and Lesser GPL library license.
Whenever there is any discrepancy between the two licenses,
the BSD license will take precedence.
Set tabs to 4 for best viewing.
Latest version is available at http://adodb.sourceforge.net
*/
error_reporting(E_ALL);
include_once('../adodb.inc.php');
include_once('../adodb-pager.inc.php');
$driver = 'oci8';
$sql = 'select ID, firstname as "First Name", lastname as "Last Name" from
adoxyz order by id';
//$sql = 'select count(*),firstname from adoxyz group by firstname order by 2 ';
$sql = 'select distinct firstname, lastname from adoxyz order by firstname';
if ($driver == 'postgres') {
$db = NewADOConnection('postgres');
$db->PConnect('localhost','tester','test','test');
}
if ($driver == 'access') {
$db = NewADOConnection('access');
$db->PConnect("nwind", "", "", "");
}
if ($driver == 'ibase') {
$db = NewADOConnection('ibase');
$db->PConnect("localhost:e:\\firebird\\examples\\employee.gdb",
"sysdba", "masterkey", "");
$sql = 'select distinct firstname, lastname from adoxyz order by
firstname';
}
if ($driver == 'mssql') {
$db = NewADOConnection('mssql');
$db->Connect('JAGUAR\vsdotnet','adodb','natsoft','northwind');
}
if ($driver == 'oci8') {
$db = NewADOConnection('oci8');
$db->Connect('','scott','natsoft');
}
if ($driver == 'access') {
$db = NewADOConnection('access');
$db->Connect('nwind');
}
if (empty($driver) or $driver == 'mysql') {
$db = NewADOConnection('mysql');
$db->Connect('localhost','root','','xphplens');
}
//$db->pageExecuteCountRows = false;
$db->debug = true;
if (0) {
$rs = &$db->Execute($sql);
include_once('../toexport.inc.php');
print "<pre>";
print rs2csv($rs); # return a string
print '<hr>';
$rs->MoveFirst(); # note, some databases do not support MoveFirst
print rs2tab($rs); # return a string
print '<hr>';
$rs->MoveFirst();
rs2tabout($rs); # send to stdout directly
print "</pre>";
}
$pager = new ADODB_Pager($db,$sql);
$pager->showPageLinks = true;
$pager->linksPerPage = 3;
$pager->cache = 60;
$pager->Render($rows=7);
?>
--- NEW FILE: test2.php ---
<?php
// BASIC ADO test
include_once('../adodb.inc.php');
$db = &ADONewConnection("ado_access");
$db->debug=1;
$access = 'd:\inetpub\wwwroot\php\NWIND.MDB';
$myDSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;'
. 'DATA SOURCE=' . $access . ';';
echo "<p>PHP ",PHP_VERSION,"</p>";
$db->Connect($myDSN) || die('fail');
print_r($db->ServerInfo());
try {
$rs = $db->Execute("select $db->sysTimeStamp,* from adoxyz where
id>02xx");
print_r($rs->fields);
} catch(exception $e) {
print_r($e);
echo "<p> Date m/d/Y =",$db->UserDate($rs->fields[4],'m/d/Y');
}
?>
--- NEW FILE: testmssql.php ---
<?php
/**
* @version V4.50 6 July 2004 (c) 2000-2004 John Lim
(jlim-l15XFKl8ZeYZ+IcD6AW/HA@xxxxxxxxxxxxxxxx). All rights reserved.
* Released under both BSD license and Lesser GPL library license.
* Whenever there is any discrepancy between the two licenses,
* the BSD license will take precedence.
*
* Set tabs to 4 for best viewing.
*
* Latest version is available at http://php.weblogs.com
*
* Test GetUpdateSQL and GetInsertSQL.
*/
error_reporting(E_ALL);
include('../adodb.inc.php');
include('../tohtml.inc.php');
//==========================
// This code tests an insert
$conn = &ADONewConnection("mssql"); // create a connection
$conn->Connect('localhost','sa','natsoft','northwind') or die('Fail');
$conn->debug =1;
$query = 'select * from products';
$conn->SetFetchMode(ADODB_FETCH_ASSOC);
$rs = $conn->Execute($query);
echo "<pre>";
while( !$rs->EOF ) {
$output[] = $rs->fields;
var_dump($rs->fields);
$rs->MoveNext();
print "<p>";
}
die();
$p = $conn->Prepare('insert into products (productname,unitprice,dcreated)
values (?,?,?)');
echo "<pre>";
print_r($p);
$conn->debug=1;
$conn->Execute($p,array('John'.rand(),33.3,$conn->DBDate(time())));
$p = $conn->Prepare('select * from products where productname like ?');
$arr = $conn->getarray($p,array('V%'));
print_r($arr);
die();
//$conn = &ADONewConnection("mssql");
//$conn->Connect('mangrove','sa','natsoft','ai');
//$conn->Connect('mangrove','sa','natsoft','ai');
$conn->debug=1;
$conn->Execute('delete from blobtest');
$conn->Execute('insert into blobtest (id) values(1)');
$conn->UpdateBlobFile('blobtest','b1','../cute_icons_for_site/adodb.gif','id=1');
$rs = $conn->Execute('select b1 from blobtest where id=1');
$output = "c:\\temp\\test_out-".date('H-i-s').".gif";
print "Saving file <b>$output</b>, size=".strlen($rs->fields[0])."<p>";
$fd = fopen($output, "wb");
fwrite($fd, $rs->fields[0]);
fclose($fd);
print " <a href=file://$output>View Image</a>";
//$rs = $conn->Execute('SELECT id,SUBSTRING(b1, 1, 10) FROM blobtest');
//rs2html($rs);
?>
--- NEW FILE: test5.php ---
<?php
/*
V4.54 5 Nov 2004 (c) 2000-2004 John Lim
(jlim-l15XFKl8ZeYZ+IcD6AW/HA@xxxxxxxxxxxxxxxx). All rights reserved.
Released under both BSD license and Lesser GPL library license.
Whenever there is any discrepancy between the two licenses,
the BSD license will take precedence.
Set tabs to 4 for best viewing.
Latest version is available at http://adodb.sourceforge.net
*/
// Select an empty record from the database
include('../adodb.inc.php');
include('../tohtml.inc.php');
include('../adodb-errorpear.inc.php');
if (0) {
$conn = &ADONewConnection('mysql');
$conn->debug=1;
$conn->PConnect("localhost","root","","xphplens");
print $conn->databaseType.':'.$conn->GenID().'<br>';
}
if (0) {
$conn = &ADONewConnection("oci8"); // create a connection
$conn->debug=1;
$conn->PConnect("falcon", "scott", "tiger",
"juris8.ecosystem.natsoft.com.my"); // connect to MySQL, testdb
print $conn->databaseType.':'.$conn->GenID();
}
if (0) {
$conn = &ADONewConnection("ibase"); // create a connection
$conn->debug=1;
$conn->Connect("localhost:c:\\Interbase\\Examples\\Database\\employee.gdb",
"sysdba", "masterkey", ""); // connect to MySQL, testdb
print $conn->databaseType.':'.$conn->GenID().'<br>';
}
if (0) {
$conn = &ADONewConnection('postgres');
$conn->debug=1;
@$conn->PConnect("susetikus","tester","test","test");
print $conn->databaseType.':'.$conn->GenID().'<br>';
}
?>
--- NEW FILE: testcache.php ---
<html>
<body>
<?php
/*
V4.54 5 Nov 2004 (c) 2000-2004 John Lim
(jlim-l15XFKl8ZeYZ+IcD6AW/HA@xxxxxxxxxxxxxxxx). All rights reserved.
Released under both BSD license and Lesser GPL library license.
Whenever there is any discrepancy between the two licenses,
the BSD license will take precedence.
Set tabs to 4 for best viewing.
Latest version is available at http://adodb.sourceforge.net
*/
$ADODB_CACHE_DIR = dirname(tempnam('/tmp',''));
include("../adodb.inc.php");
if (isset($access)) {
$db=ADONewConnection('access');
$db->PConnect('nwind');
} else {
$db = ADONewConnection('mysql');
$db->PConnect('mangrove','root','','xphplens');
}
if (isset($cache)) $rs = $db->CacheExecute(120,'select * from products');
else $rs = $db->Execute('select * from products');
$arr = $rs->GetArray();
print sizeof($arr);
?>
--- NEW FILE: xmlschema.xml ---
<?xml version="1.0"?>
<schema version="0.2">
<table name="mytable">
<field name="row1" type="I">
<descr>An integer row that's a primary key and autoincrements</descr>
<KEY/>
<AUTOINCREMENT/>
</field>
<field name="row2" type="C" size="16">
<descr>A 16 character varchar row that can't be null</descr>
<NOTNULL/>
</field>
<index name="myindex">
<col>row1</col>
<col>row2</col>
</index>
</table>
<sql>
<descr>SQL to be executed only on specific platforms</descr>
<query platform="postgres|postgres7">
insert into mytable ( row1, row2 ) values ( 12, 'postgres stuff' )
</query>
<query platform="mysql">
insert into mytable ( row1, row2 ) values ( 12, 'mysql stuff' )
</query>
</sql>
<table name="obsoletetable">
<DROP/>
</table>
</schema>
--- NEW FILE: test-perf.php ---
<?php
include_once('../adodb-perf.inc.php');
error_reporting(E_ALL);
session_start();
if (isset($_GET)) {
foreach($_GET as $k => $v) {
if (strncmp($k,'test',4) == 0) $_SESSION['_db'] = $k;
}
}
if (isset($_SESSION['_db'])) {
$_db = $_SESSION['_db'];
$_GET[$_db] = 1;
$$_db = 1;
}
echo "<h1>Performance Monitoring</h1>";
include_once('testdatabases.inc.php');
function testdb($db)
{
if (!$db) return;
echo "<font size=1>";print_r($db->ServerInfo()); echo "
user=".$db->user."</font>";
$perf = NewPerfMonitor($db);
# unit tests
if (0) {
//$DB->debug=1;
echo "Data Cache Size=".$perf->DBParameter('data cache
size').'<p>';
echo $perf->HealthCheck();
echo($perf->SuspiciousSQL());
echo($perf->ExpensiveSQL());
echo($perf->InvalidSQL());
echo $perf->Tables();
echo "<pre>";
echo $perf->HealthCheckCLI();
$perf->Poll(3);
die();
}
if ($perf) $perf->UI(3);
}
?>
--- NEW FILE: testpear.php ---
<?php
/*
V4.54 5 Nov 2004 (c) 2000-2004 John Lim
(jlim-l15XFKl8ZeYZ+IcD6AW/HA@xxxxxxxxxxxxxxxx). All rights reserved.
Released under both BSD license and Lesser GPL library license.
Whenever there is any discrepancy between the two licenses,
the BSD license will take precedence.
Set tabs to 4 for best viewing.
Latest version is available at http://adodb.sourceforge.net
*/
error_reporting(E_ALL);
include_once('../adodb-pear.inc.php');
$username = 'root';
$password = '';
$hostname = 'localhost';
$databasename = 'xphplens';
$driver = 'mysql';
$dsn = "$driver://$username:$password@$hostname/$databasename";
$db = DB::Connect($dsn);
$db->setFetchMode(ADODB_FETCH_ASSOC);
$rs = $db->Query('select firstname,lastname from adoxyz');
$cnt = 0;
while ($arr = $rs->FetchRow()) {
print_r($arr);
print "<br>";
$cnt += 1;
}
if ($cnt != 50) print "<b>Error in \$cnt = $cnt</b>";
?>
--- NEW FILE: test-datadict.php ---
<?php
/*
V4.54 5 Nov 2004 (c) 2000-2004 John Lim
(jlim-l15XFKl8ZeYZ+IcD6AW/HA@xxxxxxxxxxxxxxxx). All rights reserved.
Released under both BSD license and Lesser GPL library license.
Whenever there is any discrepancy between the two licenses,
the BSD license will take precedence.
Set tabs to 4 for best viewing.
*/
error_reporting(E_ALL);
include_once('../adodb.inc.php');
foreach(array('sapdb','sybase','mysqlt','access','oci8','postgres','odbc_mssql','odbc','db2','firebird','informix')
as $dbType) {
echo "<h3>$dbType</h3><p>";
$db = NewADOConnection($dbType);
$dict = NewDataDictionary($db);
if (!$dict) continue;
$dict->debug = 1;
$opts = array('REPLACE','mysql' => 'TYPE=INNODB', 'oci8' => 'TABLESPACE
USERS');
/* $flds = array(
array('id', 'I',
'AUTO','KEY'),
array('name' => 'firstname', 'type' => 'varchar','size' => 30,
'DEFAULT'=>'Joan'),
array('lastname','varchar',28,
'DEFAULT'=>'Chen','key'),
array('averylonglongfieldname','X',1024,
'NOTNULL','default' =>
'test'),
array('price','N','7.2',
'NOTNULL','default' =>
'0.00'),
array('MYDATE', 'D',
'DEFDATE'),
array('TS','T',
'DEFTIMESTAMP')
);*/
$flds = "
ID I AUTO KEY,
FIRSTNAME VARCHAR(30) DEFAULT 'Joan',
LASTNAME VARCHAR(28) DEFAULT 'Chen' key,
averylonglongfieldname X(1024) DEFAULT 'test',
price N(7.2) DEFAULT '0.00',
MYDATE D DEFDATE,
BIGFELLOW X NOTNULL,
TS T DEFTIMESTAMP";
$sqla =
$dict->CreateDatabase('KUTU',array('postgres'=>"LOCATION='/u01/postdata'"));
$dict->SetSchema('KUTU');
$sqli = ($dict->CreateTableSQL('testtable',$flds, $opts));
$sqla =& array_merge($sqla,$sqli);
$sqli =
$dict->CreateIndexSQL('idx','testtable','firstname,lastname',array('BITMAP','FULLTEXT','CLUSTERED','HASH'));
$sqla =& array_merge($sqla,$sqli);
$sqli =
$dict->CreateIndexSQL('idx2','testtable','price,lastname');//,array('BITMAP','FULLTEXT','CLUSTERED'));
$sqla =& array_merge($sqla,$sqli);
$addflds = array(array('height', 'F'),array('weight','F'));
$sqli = $dict->AddColumnSQL('testtable',$addflds);
$sqla =& array_merge($sqla,$sqli);
$addflds = array(array('height',
'F','NOTNULL'),array('weight','F','NOTNULL'));
$sqli = $dict->AlterColumnSQL('testtable',$addflds);
$sqla =& array_merge($sqla,$sqli);
printsqla($dbType,$sqla);
if (file_exists('d:\inetpub\wwwroot\php\phplens\adodb\adodb.inc.php'))
if ($dbType == 'mysqlt') {
$db->Connect('localhost', "root", "", "test");
$dict->SetSchema('');
$sqla2 = $dict->ChangeTableSQL('adoxyz',$flds);
if ($sqla2) printsqla($dbType,$sqla2);
}
if ($dbType == 'postgres') {
if (@$db->Connect('localhost', "tester", "test", "test"));
$dict->SetSchema('');
$sqla2 = $dict->ChangeTableSQL('adoxyz',$flds);
if ($sqla2) printsqla($dbType,$sqla2);
}
if ($dbType == 'odbc_mssql') {
$dsn = $dsn = "PROVIDER=MSDASQL;Driver={SQL
Server};Server=localhost;Database=northwind;";
if (@$db->Connect($dsn, "sa", "natsoft", "test"));
$dict->SetSchema('');
$sqla2 = $dict->ChangeTableSQL('adoxyz',$flds);
if ($sqla2) printsqla($dbType,$sqla2);
}
adodb_pr($dict->databaseType);
printsqla($dbType, $dict->DropColumnSQL('table',array('`col`','col2')));
printsqla($dbType, $dict->ChangeTableSQL('adoxyz','LASTNAME
varchar(32)'));
}
function printsqla($dbType,$sqla)
{
print "<pre>";
//print_r($dict->MetaTables());
foreach($sqla as $s) {
$s = htmlspecialchars($s);
print "$s;\n";
if ($dbType == 'oci8') print "/\n";
}
print "</pre><hr>";
}
/***
Generated SQL:
mysql
CREATE DATABASE KUTU;
DROP TABLE KUTU.testtable;
CREATE TABLE KUTU.testtable (
id INTEGER NOT NULL AUTO_INCREMENT,
firstname VARCHAR(30) DEFAULT 'Joan',
lastname VARCHAR(28) NOT NULL DEFAULT 'Chen',
averylonglongfieldname LONGTEXT NOT NULL,
price NUMERIC(7,2) NOT NULL DEFAULT 0.00,
MYDATE DATE DEFAULT CURDATE(),
PRIMARY KEY (id, lastname)
)TYPE=ISAM;
CREATE FULLTEXT INDEX idx ON KUTU.testtable (firstname,lastname);
CREATE INDEX idx2 ON KUTU.testtable (price,lastname);
ALTER TABLE KUTU.testtable ADD height DOUBLE;
ALTER TABLE KUTU.testtable ADD weight DOUBLE;
ALTER TABLE KUTU.testtable MODIFY COLUMN height DOUBLE NOT NULL;
ALTER TABLE KUTU.testtable MODIFY COLUMN weight DOUBLE NOT NULL;
--------------------------------------------------------------------------------
oci8
CREATE USER KUTU IDENTIFIED BY tiger;
/
GRANT CREATE SESSION, CREATE TABLE,UNLIMITED TABLESPACE,CREATE SEQUENCE TO KUTU;
/
DROP TABLE KUTU.testtable CASCADE CONSTRAINTS;
/
CREATE TABLE KUTU.testtable (
id NUMBER(16) NOT NULL,
firstname VARCHAR(30) DEFAULT 'Joan',
lastname VARCHAR(28) DEFAULT 'Chen' NOT NULL,
averylonglongfieldname CLOB NOT NULL,
price NUMBER(7,2) DEFAULT 0.00 NOT NULL,
MYDATE DATE DEFAULT TRUNC(SYSDATE),
PRIMARY KEY (id, lastname)
)TABLESPACE USERS;
/
DROP SEQUENCE KUTU.SEQ_testtable;
/
CREATE SEQUENCE KUTU.SEQ_testtable;
/
CREATE OR REPLACE TRIGGER KUTU.TRIG_SEQ_testtable BEFORE insert ON
KUTU.testtable
FOR EACH ROW
BEGIN
select KUTU.SEQ_testtable.nextval into :new.id from dual;
END;
/
CREATE BITMAP INDEX idx ON KUTU.testtable (firstname,lastname);
/
CREATE INDEX idx2 ON KUTU.testtable (price,lastname);
/
ALTER TABLE testtable ADD (
height NUMBER,
weight NUMBER);
/
ALTER TABLE testtable MODIFY(
height NUMBER NOT NULL,
weight NUMBER NOT NULL);
/
--------------------------------------------------------------------------------
postgres
AlterColumnSQL not supported for PostgreSQL
CREATE DATABASE KUTU LOCATION='/u01/postdata';
DROP TABLE KUTU.testtable;
CREATE TABLE KUTU.testtable (
id SERIAL,
firstname VARCHAR(30) DEFAULT 'Joan',
lastname VARCHAR(28) DEFAULT 'Chen' NOT NULL,
averylonglongfieldname TEXT NOT NULL,
price NUMERIC(7,2) DEFAULT 0.00 NOT NULL,
MYDATE DATE DEFAULT CURRENT_DATE,
PRIMARY KEY (id, lastname)
);
CREATE INDEX idx ON KUTU.testtable USING HASH (firstname,lastname);
CREATE INDEX idx2 ON KUTU.testtable (price,lastname);
ALTER TABLE KUTU.testtable ADD height FLOAT8;
ALTER TABLE KUTU.testtable ADD weight FLOAT8;
--------------------------------------------------------------------------------
odbc_mssql
CREATE DATABASE KUTU;
DROP TABLE KUTU.testtable;
CREATE TABLE KUTU.testtable (
id INT IDENTITY(1,1) NOT NULL,
firstname VARCHAR(30) DEFAULT 'Joan',
lastname VARCHAR(28) DEFAULT 'Chen' NOT NULL,
averylonglongfieldname TEXT NOT NULL,
price NUMERIC(7,2) DEFAULT 0.00 NOT NULL,
MYDATE DATETIME DEFAULT GetDate(),
PRIMARY KEY (id, lastname)
);
CREATE CLUSTERED INDEX idx ON KUTU.testtable (firstname,lastname);
CREATE INDEX idx2 ON KUTU.testtable (price,lastname);
ALTER TABLE KUTU.testtable ADD
height REAL,
weight REAL;
ALTER TABLE KUTU.testtable ALTER COLUMN height REAL NOT NULL;
ALTER TABLE KUTU.testtable ALTER COLUMN weight REAL NOT NULL;
--------------------------------------------------------------------------------
*/
echo "<h1>Test XML Schema</h1>";
$ff = file('xmlschema.xml');
echo "<pre>";
foreach($ff as $xml) echo htmlspecialchars($xml);
echo "</pre>";
include_once('test-xmlschema.php');
?>
--- NEW FILE: benchmark.php ---
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>ADODB Benchmarks</title>
</head>
<body>
<?php
/*
V4.54 5 Nov 2004 (c) 2000-2004 John Lim
(jlim-l15XFKl8ZeYZ+IcD6AW/HA@xxxxxxxxxxxxxxxx). All rights reserved.
Released under both BSD license and Lesser GPL library license.
Whenever there is any discrepancy between the two licenses,
the BSD license will take precedence.
Benchmark code to test the speed to the ADODB library with different
databases.
This is a simplistic benchmark to be used as the basis for further testing.
It should not be used as proof of the superiority of one database over the
other.
*/
$testmssql = true;
//$testvfp = true;
$testoracle = true;
$testado = true;
$testibase = true;
$testaccess = true;
$testmysql = true;
$testsqlite = true;;
set_time_limit(240); // increase timeout
include("../tohtml.inc.php");
include("../adodb.inc.php");
function testdb(&$db,$createtab="create table ADOXYZ (id int, firstname
char(24), lastname char(24), created date)")
{
GLOBAL $ADODB_version,$ADODB_FETCH_MODE;
adodb_backtrace();
$max = 100;
$sql = 'select * from ADOXYZ';
$ADODB_FETCH_MODE = ADODB_FETCH_NUM;
//print "<h3>ADODB Version: $ADODB_version Host: <i>$db->host</i>
Database: <i>$db->database</i></h3>";
// perform query once to cache results so we are only testing
throughput
$rs = $db->Execute($sql);
if (!$rs){
print "Error in recordset<p>";
return;
}
$arr = $rs->GetArray();
//$db->debug = true;
global $ADODB_COUNTRECS;
$ADODB_COUNTRECS = false;
$start = microtime();
for ($i=0; $i < $max; $i++) {
$rs =& $db->Execute($sql);
$arr =& $rs->GetArray();
// print $arr[0][1];
}
$end = microtime();
$start = explode(' ',$start);
$end = explode(' ',$end);
//print_r($start);
//print_r($end);
// print_r($arr);
$total = $end[0]+trim($end[1]) - $start[0]-trim($start[1]);
printf ("<p>seconds = %8.2f for %d iterations each with %d
records</p>",$total,$max, sizeof($arr));
flush();
//$db->Close();
}
include("testdatabases.inc.php");
?>
</body>
</html>
--- NEW FILE: test4.php ---
<?php
/**
* @version V4.50 6 July 2004 (c) 2000-2004 John Lim
(jlim-l15XFKl8ZeYZ+IcD6AW/HA@xxxxxxxxxxxxxxxx). All rights reserved.
* Released under both BSD license and Lesser GPL library license.
* Whenever there is any discrepancy between the two licenses,
* the BSD license will take precedence.
*
* Set tabs to 4 for best viewing.
*
* Latest version is available at http://php.weblogs.com
*
* Test GetUpdateSQL and GetInsertSQL.
*/
error_reporting(E_ALL);
function testsql()
{
include('../adodb.inc.php');
include('../tohtml.inc.php');
global $ADODB_FORCE_TYPE;
//==========================
// This code tests an insert
$sql = "
SELECT *
FROM ADOXYZ WHERE id = -1";
// Select an empty record from the database
$conn = &ADONewConnection("mssql"); // create a connection
$conn->PConnect("", "sa", "natsoft", "northwind"); // connect to MySQL, testdb
//$conn = &ADONewConnection("mysql"); // create a connection
//$conn->PConnect("localhost", "root", "", "test"); // connect to MySQL, testdb
//$conn =& ADONewConnection('oci8');
//$conn->Connect('','scott','natsoft');
//$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
$conn->debug=1;
$conn->Execute("delete from adoxyz where lastname like 'Smi%'");
$rs = $conn->Execute($sql); // Execute the query and get the empty recordset
$record = array(); // Initialize an array to hold the record data to insert
if (strpos($conn->databaseType,'mssql')!==false) $record['id'] = 751;
$record["firstname"] = 'Jann';
$record["lastname"] = "Smitts";
$record["created"] = time();
$insertSQL = $conn->GetInsertSQL($rs, $record);
$conn->Execute($insertSQL); // Insert the record into the database
if (strpos($conn->databaseType,'mssql')!==false) $record['id'] = 752;
// Set the values for the fields in the record
$record["firstname"] = 'null';
$record["lastname"] = "Smith\$@//";
$record["created"] = time();
if (isset($_GET['f'])) $ADODB_FORCE_TYPE = $_GET['f'];
//$record["id"] = -1;
// Pass the empty recordset and the array containing the data to insert
// into the GetInsertSQL function. The function will process the data and return
// a fully formatted insert sql statement.
$insertSQL = $conn->GetInsertSQL($rs, $record);
$conn->Execute($insertSQL); // Insert the record into the database
$insertSQL2 = $conn->GetInsertSQL($table='ADOXYZ', $record);
if ($insertSQL != $insertSQL2) echo "<p><b>Walt's new stuff failed</b>:
$insertSQL2</p>";
//==========================
// This code tests an update
$sql = "
SELECT *
FROM ADOXYZ WHERE lastname=".$conn->Param('var'). " ORDER BY 1";
// Select a record to update
$varr = array('var'=>$record['lastname'].'');
$rs = $conn->Execute($sql,$varr); // Execute the query and get the existing
record to update
if (!$rs || $rs->EOF) print "<p><b>No record found!</b></p>";
$record = array(); // Initialize an array to hold the record data to update
// Set the values for the fields in the record
$record["firstName"] = "Caroline".rand();
//$record["lasTname"] = ""; // Update Caroline's lastname from Miranda to Smith
$record["creAted"] = '2002-12-'.(rand()%30+1);
$record['num'] = '';
// Pass the single record recordset and the array containing the data to update
// into the GetUpdateSQL function. The function will process the data and return
// a fully formatted update sql statement.
// If the data has not changed, no recordset is returned
$updateSQL = $conn->GetUpdateSQL($rs, $record);
$conn->Execute($updateSQL,$varr); // Update the record in the database
if ($conn->Affected_Rows() != 1)print "<p><b>Error1 </b>: Rows
Affected=".$conn->Affected_Rows().", should be 1</p>";
$record["firstName"] = "Caroline".rand();
$record["lasTname"] = "Smithy Jones"; // Update Caroline's lastname from
Miranda to Smith
$record["creAted"] = '2002-12-'.(rand()%30+1);
$record['num'] = 331;
$updateSQL = $conn->GetUpdateSQL($rs, $record);
$conn->Execute($updateSQL,$varr); // Update the record in the database
if ($conn->Affected_Rows() != 1)print "<p><b>Error 2</b>: Rows
Affected=".$conn->Affected_Rows().", should be 1</p>";
$rs = $conn->Execute("select * from ADOXYZ where lastname like 'Sm%'");
//adodb_pr($rs);
rs2html($rs);
}
testsql();
?>
--- NEW FILE: time.php ---
<?php
include_once('../adodb-time.inc.php');
//adodb_date_test();
?>
<?php
//require("adodb-time.inc.php");
$datestring = "1963-12-04"; // string normally from mySQL
$stringArray = explode("-", $datestring);
$date = adodb_mktime(0,0,0,$stringArray[1],$stringArray[2],$stringArray[0]);
$convertedDate = date("d-M-Y", $date); // converted string to UK style date
echo( "Birthday: $convertedDate" ); //why is string returned as one day (3 not
4) less for this example??
?>
--- NEW FILE: pdo.php ---
<?php
error_reporting(E_ALL);
include('../adodb.inc.php');
echo "New Connection\n";
$DB = NewADOConnection('pdo');
echo "Connect\n";
$pdo_connection_string = 'odbc:nwind';
$DB->Connect($pdo_connection_string,'','') || die("CONNECT FAILED");
echo "Execute\n";
//$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
$rs = $DB->Execute("select * from products where productid<3");
echo "e=".$DB->ErrorNo() . " ".($DB->ErrorMsg())."\n";
//print_r(get_class_methods($DB->_stmt));
if (!$rs) die("NO RS");
echo "FETCH\n";
$cnt = 0;
while (!$rs->EOF) {
print_r($rs->fields);
$rs->MoveNext();
if ($cnt++ > 1000) break;
}
echo "<br>--------------------------------------------------------<br>\n\n\n";
$stmt = $DB->PrepareStmt("select * from products");
$rs = $stmt->Execute();
echo "e=".$stmt->ErrorNo() . " ".($stmt->ErrorMsg())."\n";
while ($arr = $rs->FetchRow()) {
print_r($arr);
}
die("DONE\n");
?>
--- NEW FILE: testdatabases.inc.php ---
<?php
/*
V4.54 5 Nov 2004 (c) 2000-2004 John Lim
(jlim-l15XFKl8ZeYZ+IcD6AW/HA@xxxxxxxxxxxxxxxx). All rights reserved.
Released under both BSD license and Lesser GPL library license.
Whenever there is any discrepancy between the two licenses,
the BSD license will take precedence.
*/
/* this file is used by the ADODB test program: test.php */
?>
<table><tr valign=top><td>
<form method=get>
<input type=checkbox name="testaccess" value=1 <?php echo !empty($testaccess) ?
'checked' : '' ?>> <b>Access</b><br>
<input type=checkbox name="testibase" value=1 <?php echo !empty($testibase) ?
'checked' : '' ?>> <b>Interbase</b><br>
<input type=checkbox name="testmssql" value=1 <?php echo !empty($testmssql) ?
'checked' : '' ?>> <b>MSSQL</b><br>
<input type=checkbox name="testmysql" value=1 <?php echo !empty($testmysql) ?
'checked' : '' ?>> <b>MySQL</b><br>
<input type=checkbox name="testmysqlodbc" value=1 <?php echo
!empty($testmysqlodbc) ? 'checked' : '' ?>> <b>MySQL ODBC</b><br>
<input type=checkbox name="testmysqli" value=1 <?php echo !empty($testmysqli) ?
'checked' : '' ?>> <b>MySQLi</b>
<br>
<td><input type=checkbox name="testsqlite" value=1 <?php echo
!empty($testsqlite) ? 'checked' : '' ?>> <b>SQLite</b><br>
<input type=checkbox name="testproxy" value=1 <?php echo !empty($testproxy) ?
'checked' : '' ?>> <b>MySQL Proxy</b><br>
<input type=checkbox name="testoracle" value=1 <?php echo !empty($testoracle) ?
'checked' : '' ?>> <b>Oracle (oci8)</b> <br>
<input type=checkbox name="testpostgres" value=1 <?php echo
!empty($testpostgres) ? 'checked' : '' ?>> <b>PostgreSQL</b><br>
<input type=checkbox name="testpgodbc" value=1 <?php echo !empty($testpgodbc) ?
'checked' : '' ?>> <b>PostgreSQL ODBC</b><br>
<td><input type=checkbox name="testdb2" value=1 <?php echo !empty($testdb2) ?
'checked' : '' ?>> DB2<br>
<input type=checkbox name="testvfp" value=1 <?php echo !empty($testvfp) ?
'checked' : '' ?>> VFP+ODBTP<br>
<input type=checkbox name="testado" value=1 <?php echo !empty($testado) ?
'checked' : '' ?>> ADO (for mssql and access)<br>
<input type=checkbox name="nocountrecs" value=1 <?php echo !empty($nocountrecs)
? 'checked' : '' ?>> $ADODB_COUNTRECS=false<br>
<input type=checkbox name="nolog" value=1 <?php echo !empty($nolog) ? 'checked'
: '' ?>> No SQL Logging<br>
<input type=checkbox name="time" value=1 <?php echo !empty($_GET['time']) ?
'checked' : '' ?>> ADOdb time test
</table>
<input type=submit>
</form>
<?php
if ($ADODB_FETCH_MODE != ADODB_FETCH_DEFAULT) print "<h3>FETCH MODE IS NOT
ADODB_FETCH_DEFAULT</h3>";
if (isset($nocountrecs)) $ADODB_COUNTRECS = false;
// cannot test databases below, but we include them anyway to check
// if they parse ok...
if (!strpos(PHP_VERSION,'5') === 0) {
ADOLoadCode("sybase");
ADOLoadCode("postgres");
ADOLoadCode("postgres7");
ADOLoadCode("firebird");
ADOLoadCode("borland_ibase");
ADOLoadCode("informix");
ADOLoadCode("sqlanywhere");
// ADOLoadCode('mysqli');
}
flush();
if (!empty($testpostgres)) {
//ADOLoadCode("postgres");
$db = &ADONewConnection('postgres');
print "<h1>Connecting $db->databaseType...</h1>";
if ($db->Connect("localhost","tester","test","test")) {
testdb($db,"create table ADOXYZ (id integer, firstname
char(24), lastname varchar,created date)");
}else
print "ERROR: PostgreSQL requires a database called test on
server, user tester, password test.<BR>".$db->ErrorMsg();
}
if (!empty($testpgodbc)) {
$db = &ADONewConnection('odbc');
$db->hasTransactions = false;
print "<h1>Connecting $db->databaseType...</h1>";
if ($db->PConnect('Postgresql')) {
$db->hasTransactions = true;
testdb($db,
"create table ADOXYZ (id int, firstname char(24), lastname
char(24), created date) type=innodb");
} else print "ERROR: PostgreSQL requires a database called test on
server, user tester, password test.<BR>".$db->ErrorMsg();
}
if (!empty($testibase)) {
//$_GET['nolog'] = true;
$db = &ADONewConnection('firebird');
print "<h1>Connecting $db->databaseType...</h1>";
if
($db->PConnect("localhost:d:\\firebird\\151\\examples\\EMPLOYEE.fdb", "sysdba",
"masterkey", ""))
testdb($db,"create table ADOXYZ (id integer, firstname
char(24), lastname char(24),price numeric(12,2),created date)");
else print "ERROR: Interbase test requires a database called
employee.gdb".'<BR>'.$db->ErrorMsg();
}
if (!empty($testsqlite)) {
$db = &ADONewConnection('sqlite');
print "<h1>Connecting $db->databaseType...</h1>";
if ($db->PConnect("d:\\inetpub\\adodb\\sqlite.db", "", "", ""))
testdb($db,"create table ADOXYZ (id int, firstname char(24),
lastname char(24),created datetime)");
else print "ERROR: SQLite";
}
// REQUIRES ODBC DSN CALLED nwind
if (!empty($testaccess)) {
$db = &ADONewConnection('access');
print "<h1>Connecting $db->databaseType...</h1>";
$access = 'd:\inetpub\wwwroot\php\NWIND.MDB';
$dsn = "nwind";
$dsn = "Driver={Microsoft Access Driver
(*.mdb)};Dbq=$access;Uid=Admin;Pwd=;";
//$dsn = 'Provider=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=' . $access .
';';
if ($db->PConnect($dsn, "", "", ""))
testdb($db,"create table ADOXYZ (id int, firstname char(24),
lastname char(24),created datetime)");
else print "ERROR: Access test requires a Windows ODBC DSN=nwind,
Access driver";
}
if (!empty($testaccess) && !empty($testado)) { // ADO ACCESS
$db = &ADONewConnection("ado_access");
print "<h1>Connecting $db->databaseType...</h1>";
$access = 'd:\inetpub\wwwroot\php\NWIND.MDB';
$myDSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;'
. 'DATA SOURCE=' . $access . ';';
//. 'USER ID=;PASSWORD=;';
$_GET['nolog'] = 1;
if ($db->PConnect($myDSN, "", "", "")) {
print "ADO version=".$db->_connectionID->version."<br>";
testdb($db,"create table ADOXYZ (id int, firstname char(24),
lastname char(24),created datetime)");
} else print "ERROR: Access test requires a Access database
$access".'<BR>'.$db->ErrorMsg();
}
if (!empty($testvfp)) { // ODBC
$db = &ADONewConnection('vfp');
print "<h1>Connecting $db->databaseType...</h1>";flush();
if ( $db->PConnect("vfp-adoxyz")) {
testdb($db,"create table d:\\inetpub\\adodb\\ADOXYZ (id int,
firstname char(24), lastname char(24),created date)");
} else print "ERROR: Visual FoxPro test requires a Windows ODBC
DSN=vfp-adoxyz, VFP driver";
echo "<hr>";
$db = &ADONewConnection('odbtp');
if ( $db->PConnect('localhost','DRIVER={Microsoft Visual FoxPro
Driver};SOURCETYPE=DBF;SOURCEDB=d:\inetpub\adodb;EXCLUSIVE=NO;')) {
print "<h1>Connecting $db->databaseType...</h1>";flush();
testdb($db,"create table d:\\inetpub\\adodb\\ADOXYZ (id int, firstname
char(24), lastname char(24),created date)");
} else print "ERROR: Visual FoxPro odbtp requires a Windows ODBC
DSN=vfp-adoxyz, VFP driver";
}
// REQUIRES MySQL server at localhost with database 'test'
if (!empty($testmysql)) { // MYSQL
if (PHP_VERSION >= 5 || $HTTP_SERVER_VARS['HTTP_HOST'] == 'localhost')
$server = 'localhost';
else $server = "mangrove";
$user = 'root'; $password = ''; $database = 'northwind';
$db =
&ADONewConnection("mysql://$user:$password@$server/$database?persist");
print "<h1>Connecting $db->databaseType...</h1>";
if (true || $db->PConnect($server, "root", "", "northwind")) {
//$db->debug=1;$db->Execute('drop table ADOXYZ');
testdb($db,
"create table ADOXYZ (id int, firstname char(24), lastname
char(24), created date)");
} else print "ERROR: MySQL test requires a MySQL server on localhost,
userid='admin', password='', database='test'".'<BR>'.$db->ErrorMsg();
}
// REQUIRES MySQL server at localhost with database 'test'
if (!empty($testmysqli)) { // MYSQL
$db = &ADONewConnection('mysqli');
print "<h1>Connecting $db->databaseType...</h1>";
if (PHP_VERSION >= 5 || $HTTP_SERVER_VARS['HTTP_HOST'] == 'localhost')
$server = 'localhost';
else $server = "mangrove";
if ($db->PConnect($server, "root", "", "northwind")) {
//$db->debug=1;$db->Execute('drop table ADOXYZ');
testdb($db,
"create table ADOXYZ (id int, firstname char(24), lastname
char(24), created date)");
} else print "ERROR: MySQL test requires a MySQL server on localhost,
userid='admin', password='', database='test'".'<BR>'.$db->ErrorMsg();
}
// REQUIRES MySQL server at localhost with database 'test'
if (!empty($testmysqlodbc)) { // MYSQL
$db = &ADONewConnection('odbc');
$db->hasTransactions = false;
print "<h1>Connecting $db->databaseType...</h1>";
if ($HTTP_SERVER_VARS['HTTP_HOST'] == 'localhost') $server =
'localhost';
else $server = "mangrove";
if ($db->PConnect('mysql', "root", ""))
testdb($db,
"create table ADOXYZ (id int, firstname char(24), lastname
char(24), created date) type=innodb");
else print "ERROR: MySQL test requires a MySQL server on localhost,
userid='admin', password='', database='test'".'<BR>'.$db->ErrorMsg();
}
if (!empty($testproxy)){
$db = &ADONewConnection('proxy');
print "<h1>Connecting $db->databaseType...</h1>";
if ($HTTP_SERVER_VARS['HTTP_HOST'] == 'localhost') $server =
'localhost';
if ($db->PConnect('http://localhost/php/phplens/adodb/server.php'))
testdb($db,
"create table ADOXYZ (id int, firstname char(24), lastname
char(24), created date) type=innodb");
else print "ERROR: MySQL test requires a MySQL server on localhost,
userid='admin', password='', database='test'".'<BR>'.$db->ErrorMsg();
}
ADOLoadCode('oci805');
ADOLoadCode("oci8po");
if (!empty($testoracle)) {
$dsn = "oci8po://scott:natsoft@sherkhan?persist";
$db = ADONewConnection($dsn);
print "<h1>Connecting $db->databaseType...</h1>";
if (true || $db->Connect('', "scott", "natsoft",''))
testdb($db,"create table ADOXYZ (id int, firstname varchar(24),
lastname varchar(24),created date)");
else print "ERROR: Oracle test requires an Oracle server setup with
scott/natsoft".'<BR>'.$db->ErrorMsg();
}
ADOLoadCode("oracle"); // no longer supported
if (false && !empty($testoracle)) {
$db = ADONewConnection();
print "<h1>Connecting $db->databaseType...</h1>";
if ($db->PConnect("", "scott", "tiger", "natsoft.domain"))
testdb($db,"create table ADOXYZ (id int, firstname varchar(24),
lastname varchar(24),created date)");
else print "ERROR: Oracle test requires an Oracle server setup with
scott/tiger".'<BR>'.$db->ErrorMsg();
}
ADOLoadCode("db2"); // no longer supported
if (!empty($testdb2)) {
$db = ADONewConnection();
print "<h1>Connecting $db->databaseType...</h1>";
$dsn = "db2_sample";
$dsn = "driver={IBM db2 odbc
DRIVER};Database=sample;hostname=localhost;port=50000;protocol=TCPIP; uid=root;
pwd=natsoft";
if ($db->Connect($dsn)) {
// testdb($db,"create table ADOXYZ (id int, firstname varchar(24),
lastname varchar(24),created date)");
} else print "ERROR: DB2 test requires an server setup with odbc data
source db2_sample".'<BR>'.$db->ErrorMsg();
echo "<hr>";
flush();
$dsn = "driver={IBM db2 odbc
DRIVER};Database=sample;hostname=localhost;port=50000;protocol=TCPIP; uid=root;
pwd=natsoft";
$db = ADONewConnection('odbtp');
if ($db->Connect('127.0.0.1',$dsn)) {
$db->debug=1;
$arr = $db->GetArray( "||SQLProcedures" ); adodb_pr($arr);
$arr = $db->GetArray( "||SQLProcedureColumns|||GET_ROUTINE_SAR"
);adodb_pr($arr);
testdb($db,"create table ADOXYZ (id int, firstname varchar(24),
lastname varchar(24),created date)");
} else echo ("ERROR Connection");
echo $db->ErrorMsg();
}
$server = 'sherkhan';
if (extension_loaded('odbtp') && !empty($testmssql)) { // MS SQL Server via ODBC
$db = ADONewConnection('odbtp');
$dsn = "PROVIDER=MSDASQL;Driver={SQL
Server};Server=$server;Database=northwind;uid=adodb;pwd=natsoft";
if ($db->PConnect('localhost',$dsn, "", "")) {
print "<h1>Connecting $db->databaseType...</h1>";
testdb($db,"create table ADOXYZ (id int, firstname char(24)
null, lastname char(24) null,created datetime null)");
}
else print "ERROR: MSSQL test 1 requires a MS SQL 7 server setup with
DSN setup";
}
ADOLoadCode('odbc_mssql');
if (!empty($testmssql)) { // MS SQL Server via ODBC
$db = ADONewConnection();
print "<h1>Connecting $db->databaseType...</h1>";
$dsn = "PROVIDER=MSDASQL;Driver={SQL
Server};Server=$server;Database=northwind;";
if ($db->PConnect($dsn, "adodb", "natsoft", "")) {
testdb($db,"create table ADOXYZ (id int, firstname char(24)
null, lastname char(24) null,created datetime null)");
}
else print "ERROR: MSSQL test 1 requires a MS SQL 7 server setup with
DSN setup";
}
ADOLoadCode("ado_mssql");
if (!empty($testmssql) && !empty($testado) ) { // ADO ACCESS MSSQL -- thru ODBC
-- DSN-less
$db = &ADONewConnection("ado_mssql");
//$db->debug=1;
print "<h1>Connecting DSN-less $db->databaseType...</h1>";
$myDSN="PROVIDER=MSDASQL;DRIVER={SQL Server};"
.
"SERVER=$server;DATABASE=NorthWind;UID=adodb;PWD=natsoft;Trusted_Connection=No"
;
if ($db->PConnect($myDSN, "", "", ""))
testdb($db,"create table ADOXYZ (id int, firstname char(24)
null, lastname char(24) null,created datetime null)");
else print "ERROR: MSSQL test 2 requires MS SQL 7";
}
ADOLoadCode("mssqlpo");
if (!empty($testmssql)) { // MS SQL Server -- the extension is buggy --
probably better to use ODBC
$db = ADONewConnection("mssqlpo");
//$db->debug=1;
print "<h1>Connecting $db->databaseType...</h1>";
$ok = $db->Connect('','adodb','natsoft','northwind');
if ($ok or $db->PConnect("mangrove", "sa", "natsoft", "ai")) {
AutoDetect_MSSQL_Date_Order($db);
// $db->Execute('drop table adoxyz');
testdb($db,"create table ADOXYZ (id int, firstname char(24)
null, lastname char(24) null,created datetime null)");
} else print "ERROR: MSSQL test 2 requires a MS SQL 7 on a
server='192.168.0.1', userid='adodb', password='natsoft',
database='ai'".'<BR>'.$db->ErrorMsg();
}
if (!empty($testmssql) && !empty($testado)) { // ADO ACCESS MSSQL with OLEDB
provider
$db = &ADONewConnection("ado_mssql");
print "<h1>Connecting DSN-less OLEDB Provider
$db->databaseType...</h1>";
//$db->debug=1;
$myDSN="SERVER=localhost;DATABASE=northwind;Trusted_Connection=yes";
if ($db->PConnect($myDSN, "adodb", "natsoft", 'SQLOLEDB')) {
testdb($db,"create table ADOXYZ (id int, firstname char(24),
lastname char(24),created datetime)");
} else print "ERROR: MSSQL test 2 requires a MS SQL 7 on a
server='mangrove', userid='sa', password='', database='ai'";
}
print "<h3>Tests Completed</h3>";
?>
--- NEW FILE: tmssql.php ---
<?php
error_reporting(E_ALL);
ini_set('mssql.datetimeconvert',0);
function tmssql()
{
print "<h3>mssql</h3>";
$db = mssql_connect('JAGUAR\vsdotnet','adodb','natsoft') or die('No
Connection');
mssql_select_db('northwind',$db);
$rs = mssql_query('select getdate() as date',$db);
$o = mssql_fetch_row($rs);
print_r($o);
mssql_free_result($rs);
print "<p>Delete</p>"; flush();
$rs2 = mssql_query('delete from adoxyz',$db);
$p = mssql_num_rows($rs2);
mssql_free_result($rs2);
}
function tpear()
{
include_once('DB.php');
print "<h3>PEAR</h3>";
$username = 'adodb';
$password = 'natsoft';
$hostname = 'JAGUAR\vsdotnet';
$databasename = 'northwind';
$dsn = "mssql://$username:$password@$hostname/$databasename";
$conn = &DB::connect($dsn);
print "date=".$conn->GetOne('select getdate()')."<br>";
@$conn->query('create table tester (id integer)');
print "<p>Delete</p>"; flush();
$rs = $conn->query('delete from tester');
print "date=".$conn->GetOne('select getdate()')."<br>";
}
function tadodb()
{
include_once('../adodb.inc.php');
print "<h3>ADOdb</h3>";
$conn = NewADOConnection('mssql');
$conn->Connect('JAGUAR\vsdotnet','adodb','natsoft','northwind');
// $conn->debug=1;
print "date=".$conn->GetOne('select getdate()')."<br>";
$conn->Execute('create table tester (id integer)');
print "<p>Delete</p>"; flush();
$rs = $conn->Execute('delete from tester');
print "date=".$conn->GetOne('select getdate()')."<br>";
}
?>
<a href=tmssql.php?do=tmssql>mssql</a>
<a href=tmssql.php?do=tpear>pear</a>
<a href=tmssql.php?do=tadodb>adodb</a>
<?php
if (!empty($_GET['do'])) {
$do = $_GET['do'];
$do();
}
?>
--- NEW FILE: test3.php ---
<?php
/*
V4.54 5 Nov 2004 (c) 2000-2004 John Lim
(jlim-l15XFKl8ZeYZ+IcD6AW/HA@xxxxxxxxxxxxxxxx). All rights reserved.
Released under both BSD license and Lesser GPL library license.
Whenever there is any discrepancy between the two licenses,
the BSD license will take precedence.
Set tabs to 8.
*/
error_reporting(E_ALL);
$path = dirname(__FILE__);
include("$path/../adodb-exceptions.inc.php");
include("$path/../adodb.inc.php");
try {
$db = NewADOConnection("oci8");
$db->Connect('','scott','natsoft');
$db->debug=1;
$cnt = $db->GetOne("select count(*) from adoxyz");
$rs = $db->Execute("select * from adoxyz order by id");
$i = 0;
foreach($rs as $k => $v) {
$i += 1;
echo $k; adodb_pr($v);
flush();
}
if ($i != $cnt) die("actual cnt is $i, cnt should be $cnt\n");
$rs = $db->Execute("select bad from badder");
} catch (exception $e) {
adodb_pr($e);
$e = adodb_backtrace($e->trace);
}
?>
--- NEW FILE: client.php ---
<html>
<body bgcolor=white>
<?php
/**
* V4.50 6 July 2004 (c) 2001-2002 John Lim
(jlim-l15XFKl8ZeYZ+IcD6AW/HA@xxxxxxxxxxxxxxxx). All rights reserved.
* Released under both BSD license and Lesser GPL library license.
Whenever there is any discrepancy between the two licenses,
the BSD license will take precedence.
*
* set tabs to 8
*/
// documentation on usage is at http://php.weblogs.com/adodb_csv
include('../adodb.inc.php');
include('../tohtml.inc.php');
function &send2server($url,$sql)
{
$url .= '?sql='.urlencode($sql);
print "<p>$url</p>";
$rs = csv2rs($url,$err);
if ($err) print $err;
return $rs;
}
function print_pre($s)
{
print "<pre>";print_r($s);print "</pre>";
}
$serverURL = 'http://localhost/php/phplens/adodb/server.php';
$testhttp = false;
$sql1 = "insertz into products (productname) values ('testprod 1')";
$sql2 = "insert into products (productname) values ('testprod 1')";
$sql3 = "insert into products (productname) values ('testprod 2')";
$sql4 = "delete from products where productid>80";
$sql5 = 'select * from products';
if ($testhttp) {
print "<a href=#c>Client Driver Tests</a><p>";
print "<h3>Test Error</h3>";
$rs = send2server($serverURL,$sql1);
print_pre($rs);
print "<hr>";
print "<h3>Test Insert</h3>";
$rs = send2server($serverURL,$sql2);
print_pre($rs);
print "<hr>";
print "<h3>Test Insert2</h3>";
$rs = send2server($serverURL,$sql3);
print_pre($rs);
print "<hr>";
print "<h3>Test Delete</h3>";
$rs = send2server($serverURL,$sql4);
print_pre($rs);
print "<hr>";
print "<h3>Test Select</h3>";
$rs = send2server($serverURL,$sql5);
if ($rs) rs2html($rs);
print "<hr>";
}
print "<a name=c><h1>CLIENT Driver Tests</h1>";
$conn = ADONewConnection('csv');
$conn->Connect($serverURL);
$conn->debug = true;
print "<h3>Bad SQL</h3>";
$rs = $conn->Execute($sql1);
print "<h3>Insert SQL 1</h3>";
$rs = $conn->Execute($sql2);
print "<h3>Insert SQL 2</h3>";
$rs = $conn->Execute($sql3);
print "<h3>Select SQL</h3>";
$rs = $conn->Execute($sql5);
if ($rs) rs2html($rs);
print "<h3>Delete SQL</h3>";
$rs = $conn->Execute($sql4);
print "<h3>Select SQL</h3>";
$rs = $conn->Execute($sql5);
if ($rs) rs2html($rs);
/* EXPECTED RESULTS FOR HTTP TEST:
Test Insert
http://localhost/php/adodb/server.php?sql=insert+into+products+%28productname%29+values+%28%27testprod%27%29
adorecordset Object
(
[dataProvider] => native
[fields] =>
[blobSize] => 64
[canSeek] =>
[EOF] => 1
[emptyTimeStamp] =>
[emptyDate] =>
[debug] =>
[timeToLive] => 0
[bind] =>
[_numOfRows] => -1
[_numOfFields] => 0
[_queryID] => 1
[_currentRow] => -1
[_closed] =>
[_inited] =>
[sql] => insert into products (productname) values ('testprod')
[affectedrows] => 1
[insertid] => 81
)
--------------------------------------------------------------------------------
Test Insert2
http://localhost/php/adodb/server.php?sql=insert+into+products+%28productname%29+values+%28%27testprod%27%29
adorecordset Object
(
[dataProvider] => native
[fields] =>
[blobSize] => 64
[canSeek] =>
[EOF] => 1
[emptyTimeStamp] =>
[emptyDate] =>
[debug] =>
[timeToLive] => 0
[bind] =>
[_numOfRows] => -1
[_numOfFields] => 0
[_queryID] => 1
[_currentRow] => -1
[_closed] =>
[_inited] =>
[sql] => insert into products (productname) values ('testprod')
[affectedrows] => 1
[insertid] => 82
)
--------------------------------------------------------------------------------
Test Delete
http://localhost/php/adodb/server.php?sql=delete+from+products+where+productid%3E80
adorecordset Object
(
[dataProvider] => native
[fields] =>
[blobSize] => 64
[canSeek] =>
[EOF] => 1
[emptyTimeStamp] =>
[emptyDate] =>
[debug] =>
[timeToLive] => 0
[bind] =>
[_numOfRows] => -1
[_numOfFields] => 0
[_queryID] => 1
[_currentRow] => -1
[_closed] =>
[_inited] =>
[sql] => delete from products where productid>80
[affectedrows] => 2
[insertid] => 0
)
[more stuff deleted]
.
.
.
*/
?>
--- NEW FILE: testgenid.php ---
<?php
/*
V4.50 6 July 2004
Run multiple copies of this php script at the same time
to test unique generation of id's in multiuser mode
*/
include_once('../adodb.inc.php');
$testaccess = true;
include_once('testdatabases.inc.php');
function testdb(&$db,$createtab="create table ADOXYZ (id int, firstname
char(24), lastname char(24), created date)")
{
$table = 'adodbseq';
$db->Execute("drop table $table");
//$db->debug=true;
$ctr = 5000;
$lastnum = 0;
while (--$ctr >= 0) {
$num = $db->GenID($table);
if ($num === false) {
print "GenID returned false";
break;
}
if ($lastnum + 1 == $num) print " $num ";
else {
print " <font color=red>$num</font> ";
flush();
}
$lastnum = $num;
}
}
?>
-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://productguide.itmanagersjournal.com/
|