Click to See Complete Forum and Search --> : About odbc_num_rows!


Anon
12-31-2000, 03:30 AM
-----------the class show below:------------

<?php

class DB {

var $host = ""; // the hostname of database server
var $username = "";
var $password = "";

var $Connection_ID = -1;
var $Query_ID = -1;

var $Query_IDList = array(); // An array of executed query

//var $fields = array();

var $Num_of_Rows = -1;
var $Num_of_Fields = -1;

function connect() {
$this->Connection_ID = odbc_connect($this->host, $this->username, $this->password);
/* this part does not support in ODBC
// if(!$this->Connection_ID) {
// $this->Error_Handler("Error in odbc connect");
// }
*/
return $this->Connection_ID;
}

function query($Query_String) {
$this->connect(); // connect to database
$this->Query_ID = odbc_exec($this->Connection_ID, $Query_String);
/* this part does not support in ODBC
// if(!$this->Query_ID) {
// $this->Error_Handler("Invalid String: ".$Query_String);
// }
*/
$this->insertQuery();
return $this->Query_ID;
}

function next_record() {
// return odbc_fetch_into($this->Query_ID, &$this->fields);
return odbc_fetch_row($this->Query_ID);
}

function key($name) {
// return $this->fields[$name];
return odbc_result($this->Query_ID, $name);
}

function num_rows() {
if ($this->Query_ID) {
$this->Num_of_Rows = odbc_num_rows($this->Query_ID);
} else {
$this->Num_of_Rows = 0;
}
return $this->Num_of_Rows;
}

function num_fields() {
if ($this->Query_ID) {
$this->Num_of_Fields = odbc_num_fields($this->Query_ID);
} else {
$this->Num_of_Fields = 0;
}
return $this->Num_of_Fields;
}

function insertQuery() {
$this->Query_IDList[] = $this->Query_ID;
}

function rollback() {
odbc_rollback($this->Connection_ID);
}

function close() {
odbc_free_result($this->Query_ID); // free memory
return odbc_close($this->Connection_ID); // close the connection
}

function Error_Handler($msg) {
echo "$msg\n";
$this->close();
exit();
}
}


class webctDB extends DB {
var $host = "Webct";
var $username = "YourUserName";
var $password = "YourPassWord";
}

?>
--------------------------------------------
-----------------test query-----------------
<?php

include ("./inc/webctDB.inc");
$db = new webctDB();

$query = "SELECT * FROM student";
$db->query($query);
echo $db->num_rows();
$db->close();
--------------------------------------------

I use ODBC to connect MS Access database, then i written the class for connecting database. But any problem in "odbc_num_rows", it only returns -1 in my test query, WHY?? Anyone can help me to solve this problem??

vincente
01-02-2001, 08:34 AM
Not sure, but you may want to read the annotations in the php manual:

http://www.php.net/manual/function.odbc-num-rows.php

seems like more people have had the problem.