Re: Call two class object failed

[email protected] ("Tanel Tammik")
Newsgroups php.db
Message-ID <[email protected]>
""win.a"" <[email protected]> wrote in message
news:[email protected]...
> 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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.