NewAdoConenction

Questions about the MySQL, PostgreSQL, and most other databases, as well as using it with PHP can be asked here.

Moderator: General Moderators

Post Reply
NoFrills
Forum Newbie
Posts: 7
Joined: Thu Jul 07, 2005 8:51 am

NewAdoConenction

Post by NoFrills »

I am trying to figure out of the connect to the databse I have, but everything I try isnt working.

I have gone thru dozens of examples, and read some forums, but still it doesn't work.

Code: Select all

<?

include ('adodb.inc.php'); //I place this file in the root directory /wwwroot
$db = NewADOConnection('ado_access');  //with this line included the page does not work?

...
...
Anbody know why it is not accepting the NewADOConnection line ?

I can connect to the DB with ASP, but I constructed the paged in PHP in a hope trying to learn the language.

Thanks
User avatar
Chris Corbyn
Breakbeat Nuttzer
Posts: 13098
Joined: Wed Mar 24, 2004 7:57 am
Location: Melbourne, Australia

Post by Chris Corbyn »

I'm guessing that adodb.inc.php contains a class. In which case you instantiate it with new ADOConnnection().

Code: Select all

include ('adodb.inc.php'); //I place this file in the root directory /wwwroot
$db = New ADOConnection('ado_access');  //missing a space between New and class name
If it's still giving errors after that post the contents of adodb.inc.php along with the code you're using it with and the errors you're getting ;) /wwwroot
$db = New ADOConnection('ado_access'); //missing a space between New and class name


If it's still giving errors after that post the contents of adodb.inc.php along with the code you're using it with and the errors you're getting ;)case you instantiate it with new ADOConnnection().

Code: Select all

include ('adodb.inc.php'); //I place this file in the root directory /wwwroot
$db = New ADOConnection('ado_access');  //missing a space between New and class name
If it's still giving errors after that post the contents of adodb.inc.php along with the code you're using it with and the errors you're getting ;).php'); //I place this file in the root directory /wwwroot
$db = New ADOConnection('ado_access'); //missing a space between New and class name
[/php:1:29039569ah case you instantiate it with new ADOConnnection().

Code: Select all

include ('adodb.inc.php'); //I place this file in the root directory /wwwroot
$db = New ADOConnection('ado_access');  //missing a space between New and class name
If it's still giving errors after that post the contents of adodb.inc.php along with the code you're using it with and the errors you're getting ;)
include ('adodb.inc.php'); //I place this file in the root directory /wwwroot
$db = New ADOConnection('ado_access'); //missing a space between New and class name


If it's still giving errors after that post the contents of adodb.inc.php along with the code you're using it with and the errors you're getting ;)
NoFrills
Forum Newbie
Posts: 7
Joined: Thu Jul 07, 2005 8:51 am

Post by NoFrills »

Not to sound unreasonable, but the rest of the code I know works 100%, and has no relation to connection to a database. It is simply a few echo statements to place a table on the screen. Nothing to do with a database.

Looking at your code, I noticed that the New ADOconnection is in blue, indicating that it was recgonized by the program you used. Mine is blackened out indicating that it does no know what it is. I tried to seperate the NEW and ADoconenction, which goes against all the examples I seen. Still nothing.

I do not think it has to do with and code that is in the program, but the actual program recognizing that the NewADOConnection is a working command. I am not sure why it doesn't see that, or how to fix it. I thought maybe that the include was pointing to the wrong location, so I changed that line like a dozen times.

I do not get an error message per say, but when there is an error in the PHP code, the rest of the script doesn't not follow thru. So when I have the line with NewADOConnection included, I do not get any of my echo statements, when I have it // out, the codes works fine.

I just want to connect to a database I have on my website. I know how to do this in ASP, but not PHP. If you know of another way other than my problem, I would be grateful.

thx again
User avatar
Chris Corbyn
Breakbeat Nuttzer
Posts: 13098
Joined: Wed Mar 24, 2004 7:57 am
Location: Melbourne, Australia

Post by Chris Corbyn »

Sounds like error reporting is either on very low or tunred off all together.

Add these lines to the very top of your PHP code.

Code: Select all

ini_set('display_errors', 1);
error_reporting(E_ALL);
E_ALL);
off all together.

Add these lines to the very top of your PHP code.

Code: Select all

ini_set('display_errors', 1);
error_reporting(E_ALL);
ini_set('display_errors', 1);
error_reporting(E_ALL);
NoFrills
Forum Newbie
Posts: 7
Joined: Thu Jul 07, 2005 8:51 am

Post by NoFrills »

You are a good man, did not know about that little simple code.

Warning: main(..\adodb.inc.php): failed to open stream: No such file or directory in e:\macromem.com\wwwroot\test7.php on line 31

Warning: main(): Failed opening '..\adodb.inc.php' for inclusion (include_path='.;c:\php4\pear') in e:\macromem.com\wwwroot\test7.php on line 31

Fatal error: Cannot instantiate non-existent class: adoconnection in e:\macromem.com\wwwroot\test7.php on line 34


Apparrently I do not know how to correct map to the include file. I have tried mutiple ways with ".." "/" and "\" and nothing seems to work.

all my files are located on wwwroot. So I thought I did not have to specify a location and could simple put include "Filename". That didn't work along with an assortment of other tries I made.

Thx for the help thus far.
timvw
DevNet Master
Posts: 4897
Joined: Mon Jan 19, 2004 11:11 pm
Location: Leuven, Belgium

Post by timvw »

Asumming you have the following dir structure

Code: Select all

+c:/wwwroot/
 - testscript.php
 + adodb/
   - adodb.inc.php

Code: Select all

require_once('adodb/adodb.inc.php');
NoFrills
Forum Newbie
Posts: 7
Joined: Thu Jul 07, 2005 8:51 am

Post by NoFrills »

getting an error message now:

Virtual Class -- cannot instantiate
User avatar
Chris Corbyn
Breakbeat Nuttzer
Posts: 13098
Joined: Wed Mar 24, 2004 7:57 am
Location: Melbourne, Australia

Post by Chris Corbyn »

Please post the code contained in ADOConnection.inc.php..... I think need to see exactly what it is so we know what you're trying to instantiate and we should be able to help you.

You're including a file then try to do something with it but we don't even know what's in the file :)
NoFrills
Forum Newbie
Posts: 7
Joined: Thu Jul 07, 2005 8:51 am

Post by NoFrills »

The only thing I have in there is exactly what everybody has said to try.

Code: Select all

ini_set('display_errors', 1);
		  error_reporting(E_ALL);
		  
		  

	require_once('adodb/adodb.inc.php');

$db = New ADOConnection('ado_access');
That is it. Anything else is an echo statement.
User avatar
Chris Corbyn
Breakbeat Nuttzer
Posts: 13098
Joined: Wed Mar 24, 2004 7:57 am
Location: Melbourne, Australia

Post by Chris Corbyn »

The contents of this file ===== adodb.inc.php

i.e. The one you're inlcudeing in the script. It has all the data that's required to do what you're trying. Without it I/we can't see the problem here.
NoFrills
Forum Newbie
Posts: 7
Joined: Thu Jul 07, 2005 8:51 am

Post by NoFrills »

OK gotcha. This program is some library download from the PHP.com website. I did not make it, but everywhere I go people are using it to connect their code to their database. So I gave it a try. I will post the contents below.

OK on second thought, it is a pretty large file to be posting on a forum. Would be enormous.

http://adodb.sourceforge.net/#download

So I am including the links to the download page.
User avatar
Chris Corbyn
Breakbeat Nuttzer
Posts: 13098
Joined: Wed Mar 24, 2004 7:57 am
Location: Melbourne, Australia

Post by Chris Corbyn »

Hmm.... ahhh... ohhh. Yeah you're right. I just downloaded it. It's over 3000 lines long.

But I do see that it's not a PHP error... it's an error written into the class. The constructor outputs it. looks like this isn't the correct way to handle the class. (see line 326 below)

Code: Select all

class ADOConnection {
	//
	// PUBLIC VARS 
	//
	var $dataProvider = 'native';
	var $databaseType = '';		/// RDBMS currently in use, eg. odbc, mysql, mssql					
	var $database = '';			/// Name of database to be used.	
	var $host = ''; 			/// The hostname of the database server	
	var $user = ''; 			/// The username which is used to connect to the database server. 
	var $password = ''; 		/// Password for the username. For security, we no longer store it.
	var $debug = false; 		/// if set to true will output sql statements
	var $maxblobsize = 262144; 	/// maximum size of blobs or large text fields (262144 = 256K)-- some db's die otherwise like foxpro
	var $concat_operator = '+'; /// default concat operator -- change to || for Oracle/Interbase	
	var $substr = 'substr';		/// substring operator
	var $length = 'length';		/// string length ofperator
	var $random = 'rand()';		/// random function
	var $upperCase = 'upper';		/// uppercase function
	var $fmtDate = &quote;'Y-m-d'&quote;;	/// used by DBDate() as the default date format used by the database
	var $fmtTimeStamp = &quote;'Y-m-d, h:i:s A'&quote;; /// used by DBTimeStamp as the default timestamp fmt.
	var $true = '1'; 			/// string that represents TRUE for a database
	var $false = '0'; 			/// string that represents FALSE for a database
	var $replaceQuote = &quote;\\'&quote;; 	/// string to use to replace quotes
	var $nameQuote = '&quote;';		/// string to use to quote identifiers and names
	var $charSet=false; 		/// character set to use - only for interbase, postgres and oci8
	var $metaDatabasesSQL = '';
	var $metaTablesSQL = '';
	var $uniqueOrderBy = false; /// All order by columns have to be unique
	var $emptyDate = '&amp;nbsp;';
	var $emptyTimeStamp = '&amp;nbsp;';
	var $lastInsID = false;
	//--
	var $hasInsertID = false; 		/// supports autoincrement ID?
	var $hasAffectedRows = false; 	/// supports affected rows for update/delete?
	var $hasTop = false;			/// support mssql/access SELECT TOP 10 * FROM TABLE
	var $hasLimit = false;			/// support pgsql/mysql SELECT * FROM TABLE LIMIT 10
	var $readOnly = false; 			/// this is a readonly database - used by phpLens
	var $hasMoveFirst = false;  /// has ability to run MoveFirst(), scrolling backwards
	var $hasGenID = false; 		/// can generate sequences using GenID();
	var $hasTransactions = true; /// has transactions
	//--
	var $genID = 0; 			/// sequence id used by GenID();
	var $raiseErrorFn = false; 	/// error function to call
	var $isoDates = false; /// accepts dates in ISO format
	var $cacheSecs = 3600; /// cache for 1 hour
	var $sysDate = false; /// name of function that returns the current date
	var $sysTimeStamp = false; /// name of function that returns the current timestamp
	var $arrayClass = 'ADORecordSet_array'; /// name of class used to generate array recordsets, which are pre-downloaded recordsets
	
	var $noNullStrings = false; /// oracle specific stuff - if true ensures that '' is converted to ' '
	var $numCacheHits = 0; 
	var $numCacheMisses = 0;
	var $pageExecuteCountRows = true;
	var $uniqueSort = false; /// indicates that all fields in order by must be unique
	var $leftOuter = false; /// operator to use for left outer join in WHERE clause
	var $rightOuter = false; /// operator to use for right outer join in WHERE clause
	var $ansiOuter = false; /// whether ansi outer join syntax supported
	var $autoRollback = false; // autoRollback on PConnect().
	var $poorAffectedRows = false; // affectedRows not working or unreliable
	
	var $fnExecute = false;
	var $fnCacheExecute = false;
	var $blobEncodeType = false; // false=not required, 'I'=encode to integer, 'C'=encode to char
	var $rsPrefix = &quote;ADORecordSet_&quote;;
	
	var $autoCommit = true; 	/// do not modify this yourself - actually private
	var $transOff = 0; 			/// temporarily disable transactions
	var $transCnt = 0; 			/// count of nested transactions
	
	var $fetchMode=false;
	 //
	 // PRIVATE VARS
	 //
	var $_oldRaiseFn =  false;
	var $_transOK = null;
	var $_connectionID	= false;	/// The returned link identifier whenever a successful database connection is made.	
	var $_errorMsg = false;		/// A variable which was used to keep the returned last error message.  The value will
								/// then returned by the errorMsg() function	
	var $_errorCode = false;	/// Last error code, not guaranteed to be used - only by oci8					
	var $_queryID = false;		/// This variable keeps the last created result link identifier
	
	var $_isPersistentConnection = false;	/// A boolean variable to state whether its a persistent connection or normal connection.	*/
	var $_bindInputArray = false; /// set to true if ADOConnection.Execute() permits binding of array parameters.
	var $_evalAll = false;
	var $_affected = false;
	var $_logsql = false;
	

	
	/**
	 * Constructor
	 */
	function ADOConnection()			
	{
		die('Virtual Class -- cannot instantiate');
	}
//and it goes on for 3000 lines..............
You don't need to instantiate this... you simply need to include it and use it. I'd suggest looking at some of the examples in the /test directory.
adodb documentation wrote: Installation

Make sure you are running PHP4.0.4 or later. Unpack all the files into a directory accessible by your webserver.

To test, try modifying some of the tutorial examples. Make sure you customize the connection settings correctly. You can debug using:

<?php
include('adodb/adodb.inc.php');

$db = ADONewConnection($driver); # eg. 'mysql' or 'oci8'
$db->debug = true;
$db->Connect($server, $user, $password, $database);
$rs = $db->Execute('select * from some_small_table');
print "<pre>";
print_r($rs->GetRows());
print "</pre>";
?>
ADONewConnection(), not NewADOConnection()....
timvw
DevNet Master
Posts: 4897
Joined: Mon Jan 19, 2004 11:11 pm
Location: Leuven, Belgium

Post by timvw »

method NewADOConnection (not the constructor)


I ran the following code on localhost... Works just fine...

Code: Select all

<?php
ini_set('error_reporting', E_ALL);
ini_set('display_errors', TRUE);

require_once('generic/ext/adodb/adodb.inc.php');

$db =& NewADOConnection('ado_access');
if (!$db) echo "Could not make connection";

?>
NoFrills
Forum Newbie
Posts: 7
Joined: Thu Jul 07, 2005 8:51 am

Post by NoFrills »

Strangely that is what I did intially, I was using ADONewConnection() with no luck. But at that time, I belive I had the wrong include statement and that was prevention anything from working. But by the time I was told of the error, I already had changed the ADONewConnection() to another example I had seen.

I really appreciate the time you gave to this. I did include the original ADONewConnection() and the page does load up like its suppose too. Now I can finally continue with saving and retrieving data to the database. Hopefully that will go smoother than connecting.

Thank you again.


** If I might ask, what is the difference between the Include and require_once statement?
timvw
DevNet Master
Posts: 4897
Joined: Mon Jan 19, 2004 11:11 pm
Location: Leuven, Belgium

Post by timvw »

Post Reply