📄 test.php
字号:
$db->debug = 1;
$rs = $db->SelectLimit('select * from ADOXYZ where id < 3 order by id');
$rs = RSFilter($rs,'do_strtolower');
if (trim($rs->fields[1]) != 'caroline' && trim($rs->fields[2]) != 'miranda') {
err('**** RSFilter failed');
print_r($rs->fields);
}
rs2html($rs);
$db->debug=1;
print "<p>Test Replace</p>";
$ret = $db->Replace('adoxyz',
array('id'=>1,'firstname'=>'Caroline','lastname'=>'Miranda'),
array('id'),
$autoq = true);
if (!$ret) echo "<p>Error in replacing existing record</p>";
else {
$saved = $db->debug;
$db->debug = 0;
$savec = $ADODB_COUNTRECS;
$ADODB_COUNTRECS = true;
$rs = $db->Execute('select * FROM ADOXYZ where id=1');
$db->debug = $saved;
if ($rs->RecordCount() != 1) {
$cnt = $rs->RecordCount();
rs2html($rs);
print "<b>Error - Replace failed, count=$cnt</b><p>";
}
$ADODB_COUNTRECS = $savec;
}
$ret = $db->Replace('adoxyz',
array('id'=>1000,'firstname'=>'Harun','lastname'=>'Al-Rashid'),
array('id','firstname'),
$autoq = true);
if ($ret != 2) print "<b>Replace failed: </b>";
print "test A return value=$ret (2 expected) <p>";
$ret = $db->Replace('adoxyz',
array('id'=>1000,'firstname'=>'Sherazade','lastname'=>'Al-Rashid'),
'id',
$autoq = true);
if ($ret != 1)
if ($db->dataProvider == 'ibase' && $ret == 2);
else print "<b>Replace failed: </b>";
print "test B return value=$ret (1 or if ibase then 2 expected) <p>";
print "<h3>rs2rs Test</h3>";
$rs = $db->Execute('select * from adoxyz order by id');
$rs = $db->_rs2rs($rs);
$rs->valueX = 'X';
$rs->MoveNext();
$rs = $db->_rs2rs($rs);
if (!isset($rs->valueX)) err("rs2rs does not preserve array recordsets");
if (reset($rs->fields) != 1) err("rs2rs does not move to first row");
/////////////////////////////////////////////////////////////
include_once('../pivottable.inc.php');
print "<h3>Pivot Test</h3>";
$db->debug=true;
$sql = PivotTableSQL(
$db, # adodb connection
'adoxyz', # tables
'firstname', # row fields
'lastname', # column fields
false, # join
'ID', # sum
'Sum ', # label for sum
'sum', # aggregate function
true
);
$rs = $db->Execute($sql);
if ($rs) rs2html($rs);
else Err("Pivot sql error");
$db->debug=false;
include_once "PEAR.php";
// PEAR TESTS BELOW
$ADODB_FETCH_MODE = ADODB_FETCH_NUM;
$pear = true;
$rs = $db->query('select * from adoxyz where id>0 and id<10 order by id');
$i = 0;
if ($rs && !$rs->EOF) {
while ($arr = $rs->fetchRow()) {
$i++;
//print "$i ";
if ($arr[0] != $i) {
print_r($arr);
print "<p><b>PEAR DB emulation error 1.</b></p>";
$pear = false;
break;
}
}
$rs->Close();
}
if ($i != $db->GetOne('select count(*) from adoxyz where id>0 and id<10')) {
print "<p><b>PEAR DB emulation error 1.1 EOF ($i)</b></p>";
$pear = false;
}
$rs = $db->limitQuery('select * from adoxyz where id>0 order by id',$i=3,$top=3);
$i2 = $i;
if ($rs && !$rs->EOF) {
while (!is_object($rs->fetchInto($arr))) {
$i2++;
// print_r($arr);
// print "$i ";print_r($arr);
if ($arr[0] != $i2) {
print "<p><b>PEAR DB emulation error 2.</b></p>";
$pear = false;
break;
}
}
$rs->Close();
}
if ($i2 != $i+$top) {
print "<p><b>PEAR DB emulation error 2.1 EOF (correct=$i+$top, actual=$i2)</b></p>";
$pear = false;
}
if ($pear) print "<p>PEAR DB emulation passed.</p>";
$rs = $db->SelectLimit("select ".$db->sysDate." from adoxyz",1);
$date = $rs->fields[0];
if (!$date) Err("Bad sysDate");
else {
$ds = $db->UserDate($date,"d m Y");
if ($ds != date("d m Y")) Err("Bad UserDate: ".$ds);
else echo "Passed UserDate: $ds<p>";
}
$db->debug=1;
if ($db->dataProvider == 'oci8')
$rs = $db->SelectLimit("select to_char(".$db->sysTimeStamp.",'YYYY-MM-DD HH24:MI:SS') from adoxyz",1);
else
$rs = $db->SelectLimit("select ".$db->sysTimeStamp." from adoxyz",1);
$date = $rs->fields[0];
if (!$date) Err("Bad sysTimeStamp");
else {
$ds = $db->UserTimeStamp($date,"H \\h\\r\\s-d m Y");
if ($ds != date("H \\h\\r\\s-d m Y")) Err("Bad UserTimeStamp: ".$ds.", correct is ".date("H \\h\\r\\s-d m Y"));
else echo "Passed UserTimeStamp: $ds<p>";
$date = 100;
$ds = $db->UserTimeStamp($date,"H \\h\\r\\s-d m Y");
$ds2 = date("H \\h\\r\\s-d m Y",$date);
if ($ds != $ds2) Err("Bad UserTimeStamp 2: $ds: $ds2");
else echo "Passed UserTimeStamp 2: $ds<p>";
}
if ($db->hasTransactions) {
//$db->debug=1;
echo "<p>Testing StartTrans CompleteTrans</p>";
$db->raiseErrorFn = false;
$db->StartTrans();
$rs = $db->Execute('select * from notable');
$db->StartTrans();
$db->BeginTrans();
$db->Execute("update ADOXYZ set firstname='Carolx' where id=1");
$db->CommitTrans();
$db->CompleteTrans();
$rez = $db->CompleteTrans();
if ($rez !== false) {
if (is_null($rez)) Err("Error: _transOK not modified");
else Err("Error: CompleteTrans (1) should have failed");
} else {
$name = $db->GetOne("Select firstname from ADOXYZ where id=1");
if ($name == "Carolx") Err("Error: CompleteTrans (2) should have failed");
else echo "<p> -- Passed StartTrans test1 - rolling back</p>";
}
$db->StartTrans();
$db->BeginTrans();
$db->Execute("update ADOXYZ set firstname='Carolx' where id=1");
$db->RollbackTrans();
$rez = $db->CompleteTrans();
if ($rez !== true) Err("Error: CompleteTrans (1) should have succeeded");
else {
$name = $db->GetOne("Select firstname from ADOXYZ where id=1");
if (trim($name) != "Carolx") Err("Error: CompleteTrans (2) should have succeeded, returned name=$name");
else echo "<p> -- Passed StartTrans test2 - commiting</p>";
}
}
$saved = $db->debug;
$db->debug=1;
$cnt = _adodb_getcount($db, 'select * from ADOXYZ where firstname in (select firstname from ADOXYZ)');
echo "<b>Count=</b> $cnt";
$db->debug=$saved;
global $TESTERRS;
$debugerr = true;
global $ADODB_LANG;$ADODB_LANG = 'fr';
$db->debug = false;
$TESTERRS = 0;
$db->raiseErrorFn = 'adodb_test_err';
global $ERRNO; // from adodb_test_err
$db->Execute('select * from nowhere');
$metae = $db->MetaError($ERRNO);
if ($metae !== DB_ERROR_NOSUCHTABLE) print "<p><b>MetaError=".$metae." wrong</b>, should be ".DB_ERROR_NOSUCHTABLE."</p>";
else print "<p>MetaError ok (".DB_ERROR_NOSUCHTABLE."): ".$db->MetaErrorMsg($metae)."</p>";
if ($TESTERRS != 1) print "<b>raiseErrorFn select nowhere failed</b><br>";
$rs = $db->Execute('select * from adoxyz');
if ($debugerr) print " Move";
$rs->Move(100);
$rs->_queryID = false;
if ($debugerr) print " MoveNext";
$rs->MoveNext();
if ($debugerr) print " $rs=false";
$rs = false;
print "<p>SetFetchMode() tests</p>";
$db->SetFetchMode(ADODB_FETCH_ASSOC);
$rs = $db->SelectLimit('select firstname from adoxyz',1);
// var_dump($rs->fields);
if (!isset($rs->fields['firstname'])) Err("BAD FETCH ASSOC");
$ADODB_FETCH_MODE = ADODB_FETCH_NUM;
$rs = $db->SelectLimit('select firstname from adoxyz',1);
//var_dump($rs->fields);
if (!isset($rs->fields['firstname'])) Err("BAD FETCH ASSOC");
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
$db->SetFetchMode(ADODB_FETCH_NUM);
$rs = $db->SelectLimit('select firstname from adoxyz',1);
if (!isset($rs->fields[0])) Err("BAD FETCH NUM");
print "<p>Test MetaTables again with SetFetchMode()</p>";
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
$db->SetFetchMode(ADODB_FETCH_ASSOC);
print_r($db->MetaTables());
print "<p>";
////////////////////////////////////////////////////////////////////
$conn = NewADOConnection($db->databaseType);
$conn->raiseErrorFn = 'adodb_test_err';
@$conn->Connect('abc');
if ($TESTERRS == 2) print "raiseErrorFn tests passed<br>";
else print "<b>raiseErrorFn tests failed ($TESTERRS)</b><br>";
////////////////////////////////////////////////////////////////////
global $nocountrecs;
if (isset($nocountrecs) && $ADODB_COUNTRECS) err("Error: \$ADODB_COUNTRECS is set");
if (empty($nocountrecs) && $ADODB_COUNTRECS==false) err("Error: \$ADODB_COUNTRECS is not set");
?>
</p>
<table width=100% ><tr><td bgcolor=beige> </td></tr></table>
</p></form>
<?php
if ($rs1) $rs1->Close();
if ($rs2) $rs2->Close();
if ($rs) $rs->Close();
$db->Close();
if ($db->transCnt != 0) Err("Error in transCnt=$db->transCnt (should be 0)");
printf("<p>Total queries=%d; total cached=%d</p>",$EXECS+$CACHED, $CACHED);
}
function adodb_test_err($dbms, $fn, $errno, $errmsg, $p1=false, $p2=false)
{
global $TESTERRS,$ERRNO;
$ERRNO = $errno;
$TESTERRS += 1;
print "<i>** $dbms ($fn): errno=$errno errmsg=$errmsg ($p1,$p2)</i><br>";
}
//--------------------------------------------------------------------------------------
set_time_limit(240); // increase timeout
include("../tohtml.inc.php");
include("../adodb.inc.php");
include("../rsfilter.inc.php");
/* White Space Check */
if (isset($_SERVER['argv'][1])) {
//print_r($_SERVER['argv']);
$HTTP_GET_VARS[$_SERVER['argv'][1]] = 1;
}
if ( @$HTTP_SERVER_VARS['COMPUTERNAME'] == 'TIGRESS') {
CheckWS('mysqlt');
CheckWS('postgres');
CheckWS('oci8po');
CheckWS('firebird');
CheckWS('sybase');
CheckWS('informix');
CheckWS('ado_mssql');
CheckWS('ado_access');
CheckWS('mssql');
CheckWS('vfp');
CheckWS('sqlanywhere');
CheckWS('db2');
CheckWS('access');
CheckWS('odbc_mssql');
//
CheckWS('oracle');
CheckWS('proxy');
CheckWS('fbsql');
print "White Space Check complete<p>";
}
if (sizeof($HTTP_GET_VARS) == 0) $testmysql = true;
foreach($HTTP_GET_VARS as $k=>$v) {
//global $$k;
$$k = $v;
}
if (strpos(PHP_VERSION,'5') === 0) {
//$testaccess=1;
//$testmssql = 1;
//$testsqlite=1;
}
?>
<html>
<title>ADODB Testing</title>
<body bgcolor=white>
<H1>ADODB Test</H1>
This script tests the following databases: Interbase, Oracle, Visual FoxPro, Microsoft Access (ODBC and ADO), MySQL, MSSQL (ODBC, native, ADO).
There is also support for Sybase, PostgreSQL.</p>
For the latest version of ADODB, visit <a href=http://php.weblogs.com/ADODB>php.weblogs.com</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');
?>
<?php
include_once('../adodb-time.inc.php');
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>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -