I'm making a counter using DB, 1 <?php 2 require_once 'DB.php'; 3 4 $sql_type = 'mysql'; 5 $sql_user = 'root'; 6 $sql_pass = ''; 7 $sql_host = 'localhost'; 8 $sql_db = 'valerie'; 9 10 $dsn = "$sql_type://$sql_user:$sql_pass@$sql_host/$sql_db"; 11 $db = DB::connect($dsn); 12 13 // autoExecute config 14 $table_name = 'counter'; 15 $fields_values = array('counter' => $counter++); 16 $where = "page = 'index'"; 17 18 $result = $db->query("LOCK TABLES counter WRITE"); 19 if ( DB::isError($result) ) { 20 die($result->getMessage()); 21 } 22 23 $sql = "SELECT counter FROM $table_name WHERE $where"; 24 $result = $db->query($sql); 25 if ( DB::isError($result) ) { 26 die($result->getMessage()); 27 } 28 list($counter) = $result->fetchRow(); 29 30 // update counter 31 $result = $db->autoExecute($table_name, $fields_values, DB_AUTOQUERY_UPDATE, $where); 32 if ( DB::isError($result) ) { 33 die($result->getMessage()); 34 } 35 36 $result = $db->query("UNLOCK TABLES"); 37 if ( DB::isError($result) ) { 38 die($result->getMessage()); 39 } 40 41 die; 42 ?> it works well, but I don't think it's efficient calling DB::isError everytime, so (inspired by Advanced PHP Programming book by Mr. George Schlossnagle) I made a class (PHP 4.3.9) to handle it . (instead of using functions and must call boring 'global' at the top of each function) 1 <?php 2 /** 3 * PEAR DB 4 */ 5 require_once 'DB.php'; 6 7 class DBku 8 { 9 // protected 10 var $type; 11 var $user; 12 var $pass; 13 var $host; 14 var $db; 15 var $dbhandler; 16 17 // {{{ 18 // public 19 function __construct($type, $user, $pass, $host, $db) 20 { 21 $this->type = $type; 22 $this->user = $user; 23 $this->pass = $pass; 24 $this->host = $host; 25 $this->db = $db; 26 } 27 // }}} 28 29 // {{{ 30 // public 31 function connect() 32 { 33 $this->dbhandler = DB::connect($this->type,"://",$this->user,":",$this->pass,"@",$this->host,"/ ",$this->db); 34 $this->error($this->dbhandler); 35 } 36 // }}} 37 38 // {{{ 39 // public 40 function execute($query) 41 { 42 if ( !$this->dbhandler ) { 43 $this->connect(); 44 } 45 $ret = $this->dbhandler->query($query); 46 $this->error($ret); 47 } 48 // }}} 49 50 // {{{ 51 // protected 52 function error($er_value) 53 { 54 if (DB::isError($er_value)) { 55 echo 'Standard Message: ' . $er_value->getMessage() . "\n"; 56 echo 'Standard Code: ' . $er_value->getCode() . "\n"; 57 echo 'DBMS/User Message: ' . $er_value->getUserInfo() . "\n"; 58 echo 'DBMS/Debug Message: ' . $er_value->getDebugInfo() . "\n"; 59 die; 60 } 61 } 62 // }}} 63 } 64 65 $sql = new DBku('mysql', 'root', '', 'localhost', 'valerie'); 66 var_dump($sql); 67 $sql->execute('SELECT * FROM country'); 68 die; 69 ?> my problem is : everytime I execute this file in CLI mode I always got this : E:\php\pear>php config_valerie4.inc.php object(DBku)#1 (6) { ["type"]=> string(5) "mysql" ["user"]=> string(4) "root" ["pass"]=> string(0) "" ["host"]=> string(9) "localhost" ["db"]=> string(7) "valerie" ["dbhandler"]=> NULL } Standard Message: DB Error: no database selected Standard Code: -14 DBMS/User Message: SELECT * FROM country [nativecode=1046 ** No Database Selected] DBMS/Debug Message: SELECT * FROM country [nativecode=1046 ** No Database Selected] How come the message said I didn't select database ?? I also throw this thread to php-general mailing lists because when somebody talked about OOP then many arguments would come from many people there and I just enjoy to hear (read) it :) So, Opinions (good or bad things), Suggestions, Corrections to my code (especially idea to make my class shorter and would be compatible in PHP4 & 5) would be very welcome. Thank you. Valérie Delon étudiante -- On a besoin d'apprendre beacoup plus Quelqu'un croit c'est trop Mais j'crois que ce n'est pas assez -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php