Re: Call two class object failed

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



""win.a"" <win.acc@xxxxxxxxx> wrote in message 
news:AANLkTinhmyybnAMtY5SX5m-FYoZTsywp1kxfnSexv8ke@xxxxxxxxxxxxxxxxx
> Hi my friend,i wrote two classed on is user,the other is db .The user
> have a property which from the db class object .
>
>
> When i writing my application have both class object invoked at the
> same time ,just like
> $user_a = new user($para);
> $db_a = new db()
>
> Then the problem occurs only one of the class object could work, or
> $user_a or $db_a not both,What 's problem of my code
>
> The following is my source code:
>
> class db{
> /**
> * Constructor
> */
>
>        var $result;
> var $conn;
>
> function  db(){
> require_once BOC_BASE_DIR.'/config/db.config.inc';
> $this->conn = mysql_connect($db_host,$db_user,$db_pass);
> //$this->conn = @mysql_connect($db_host,$db_user,$db_pass);
> if (!$this->conn) {
> $this->db_print_error("DB connect failed");
> }
>
> if (!mysql_select_db($db_name,$this->conn)) {
> $this->db_print_error("DB select failed");
> }
> }
>
> class user{
> private  $u_sn;
> private  $u_id;
> private  $u_name;
> private  $u_sex;
> private  $u_image;
>
>        //more property
>
> private $u_info;
>
>
> /**
> * Constructor
> */
> function __construct($name){
> $sql = "select * from boc_user where u_name = '$name'";
> $u_query = new db();
> $this->u_info = array();
> $u_query->db_query($sql);
> $this->u_info =$u_query->db_fetch_row();
>
> $this->u_sn = $this->u_info['u_sn'];
> $this->u_id = $this->u_info['u_id'];
> $this->u_name = $this->u_info['u_name'];
> $this->u_sex = $this->u_info['u_sex'];
>
>        //more are give the property value
>
> }
>
>
> The two class works well in the single application when only of them
> are invoked ,i cost me much time to deal it
> Any advice and suggestions are thankful !
>
>
> All you best
> ------------------------
> What we are struggling for ?
> The life or the life ?

Hi,

one way to do that:

<?php
class Database {
  private $link;

  function __construct() {
    $this->conn();
  }

  function conn() {
    $this->link = mysql_connect(DB_HOST, DB_USER, DB_PASS);
    mysql_select_db(DB_NAME, $this->link);
  }

  function query($query) {
    return mysql_query($query, $this->link);
  }

  function fetch_assoc($result) {
    return mysql_fetch_assoc($result);
  }
}

class User {
  private $db;

  function __construct($db) {
    $this->db = $db;
  }

  function find_by_username($username) {
    $result = $this->db->query("select * from boc_user where 
username='$username'");
    return $this->db->fetch_assoc($result);
  }
}

$db = new Database;
$user = new User($db);
$userdata = $user->find_by_username('username');
?>

I did not check the code, so there might be some typos. Anyway it should 
help you!

Br
Tanel 



-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [PHP Users]     [Postgresql Discussion]     [Kernel Newbies]     [Postgresql]     [Yosemite News]

  Powered by Linux