?? test.php
字號:
$db->debug=$saved;
} else {
print "<p><b>\$db->sysDate not defined</b></p>";
}
print "<p>Test CSV</p>";
include_once('../toexport.inc.php');
//$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
$rs = $db->SelectLimit('select id,firstname,lastname,created,\'He, he\' he,\'"\' q from ADOXYZ',10);
print "<pre>";
print rs2csv($rs);
print "</pre>";
$rs = $db->SelectLimit('select id,firstname,lastname,created,\'The "young man", he said\' from ADOXYZ',10);
if (PHP_VERSION < 5) {
print "<pre>";
rs2tabout($rs);
print "</pre>";
}
print " CacheFlush ";
$db->CacheFlush();
$date = $db->SQLDate('d-m-M-Y-\QQ h:i:s A');
$sql = "SELECT $date from ADOXYZ";
print "<p>Test SQLDate: ".htmlspecialchars($sql)."</p>";
$rs = $db->SelectLimit($sql,1);
$d = date('d-m-M-Y-').'Q'.(ceil(date('m')/3.0)).date(' h:i:s A');
if (!$rs) Err("SQLDate query returned no recordset");
else if ($d != $rs->fields[0]) Err("SQLDate 1 failed expected: <br>act:$d <br>sql:".$rs->fields[0]);
$date = $db->SQLDate('d-m-M-Y-\QQ h:i:s A',$db->DBDate("1974-02-25"));
$sql = "SELECT $date from ADOXYZ";
print "<p>Test SQLDate: ".htmlspecialchars($sql)."</p>";
$db->debug=1;
$rs = $db->SelectLimit($sql,1);
$ts = ADOConnection::UnixDate('1974-02-25');
$d = date('d-m-M-Y-',$ts).'Q'.(ceil(date('m',$ts)/3.0)).date(' h:i:s A',$ts);
if (!$rs) {
Err("SQLDate query returned no recordset");
echo $db->ErrorMsg(),'<br>';
} else if ($d != reset($rs->fields)) {
Err("SQLDate 2 failed expected: <br>act:$d <br>sql:".$rs->fields[0].' <br>'.$db->ErrorMsg());
}
print "<p>Test Filter</p>";
$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 where id>= 1 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: id=".reset($rs->fields));
/////////////////////////////////////////////////////////////
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");
$pear = true; //true;
$db->debug=false;
if ($pear) {
// PEAR TESTS BELOW
$ADODB_FETCH_MODE = ADODB_FETCH_NUM;
include_once "PEAR.php";
$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>";
flush();
$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.' expected='.date("d m Y"));
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>";
}
flush();
if ($db->hasTransactions) {
$db->debug=1;
echo "<p>Testing StartTrans CompleteTrans</p>";
$db->raiseErrorFn = false;
$db->SetTransactionMode('SERIALIZABLE');
$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();
$db->SetTransactionMode('');
$db->debug=0;
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>";
}
}
flush();
$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;
flush();
print "<p>SetFetchMode() tests</p>";
$db->SetFetchMode(ADODB_FETCH_ASSOC);
$rs = $db->SelectLimit('select firstname from ADOXYZ',1);
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");
flush();
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>";
////////////////////////////////////////////////////////////////////
print "<p>Testing Bad Connection</p>";
flush();
if (true || PHP_VERSION < 5) {
if ($db->dataProvider == 'odbtp') $db->databaseType = 'odbtp';
$conn = NewADOConnection($db->databaseType);
$conn->raiseErrorFn = 'adodb_test_err';
if (1) $conn->PConnect('abc','baduser','badpassword');
if ($TESTERRS == 2) print "raiseErrorFn tests passed<br>";
else print "<b>raiseErrorFn tests failed ($TESTERRS)</b><br>";
flush();
}
////////////////////////////////////////////////////////////////////
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");
flush();
?>
</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);
flush();
}
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']);
$_GET[$_SERVER['argv'][1]] = 1;
}
if (@$_SERVER['COMPUTERNAME'] == 'TIGRESS') {
CheckWS('mysqlt');
CheckWS('postgres');
CheckWS('oci8po');
CheckWS('firebird');
CheckWS('sybase');
if (!ini_get('safe_mode')) CheckWS('informix');
CheckWS('ado_mssql');
CheckWS('ado_access');
CheckWS('mssql');
CheckWS('vfp');
CheckWS('sqlanywhere');
CheckWS('db2');
CheckWS('access');
CheckWS('odbc_mssql');
CheckWS('firebird15');
//
CheckWS('oracle');
CheckWS('proxy');
CheckWS('fbsql');
print "White Space Check complete<p>";
}
if (sizeof($_GET) == 0) $testmysql = true;
foreach($_GET 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://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-2007 John Lim. All rights reserved. Released under BSD and LGPL, PHP <?php echo PHP_VERSION ?>.</i></p>
</body>
</html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -