📄 test.php
字号:
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 timeoutinclude("../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><?phpinclude('./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-2006 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 + -