2010-07-12 46 views
10

Tôi đang cố gắng lấy ID người dùng từ một cơ sở dữ liệu trong một lớp, nhưng tôi có rất ít kinh nghiệm với các lớp, làm thế nào tôi có thể tìm kiếm uid từ DB và sau đó trả về uid?Lớp kết nối cơ sở dữ liệu PHP

nên về cơ bản một cái gì đó như thế này,

class hello { 
    public function getUid(){ 
     //connect to the db 
     //get all of the users info 
     $array = mysql_fetch_array($result); 
     $uid = $array['uid']; 

     return $uid; 
    } 
} 

Như tôi đã nói, tôi vẫn còn mới đến các lớp học, vì vậy bất kỳ lời khuyên hay sự giúp đỡ sẽ được đánh giá rất nhiều!

Thanx trước!

Trả lời

31

đầu tiên xây dựng một thư viện lớp MySQL ... suiting các yêu cầu như thế nào trong mẫu này:

<?php 

include '../config/Dbconfig.php'; 

class Mysql extends Dbconfig { 

public $connectionString; 
public $dataSet; 
private $sqlQuery; 

    protected $databaseName; 
    protected $hostName; 
    protected $userName; 
    protected $passCode; 

function Mysql() { 
    $this -> connectionString = NULL; 
    $this -> sqlQuery = NULL; 
    $this -> dataSet = NULL; 

      $dbPara = new Dbconfig(); 
      $this -> databaseName = $dbPara -> dbName; 
      $this -> hostName = $dbPara -> serverName; 
      $this -> userName = $dbPara -> userName; 
      $this -> passCode = $dbPara ->passCode; 
      $dbPara = NULL; 
} 

function dbConnect() { 
    $this -> connectionString = mysql_connect($this -> serverName,$this -> userName,$this -> passCode); 
    mysql_select_db($this -> databaseName,$this -> connectionString); 
    return $this -> connectionString; 
} 

function dbDisconnect() { 
    $this -> connectionString = NULL; 
    $this -> sqlQuery = NULL; 
    $this -> dataSet = NULL; 
      $this -> databaseName = NULL; 
      $this -> hostName = NULL; 
      $this -> userName = NULL; 
      $this -> passCode = NULL; 
} 

function selectAll($tableName) { 
    $this -> sqlQuery = 'SELECT * FROM '.$this -> databaseName.'.'.$tableName; 
    $this -> dataSet = mysql_query($this -> sqlQuery,$this -> connectionString); 
      return $this -> dataSet; 
} 

function selectWhere($tableName,$rowName,$operator,$value,$valueType) { 
    $this -> sqlQuery = 'SELECT * FROM '.$tableName.' WHERE '.$rowName.' '.$operator.' '; 
    if($valueType == 'int') { 
     $this -> sqlQuery .= $value; 
    } 
    else if($valueType == 'char') { 
     $this -> sqlQuery .= "'".$value."'"; 
    } 
    $this -> dataSet = mysql_query($this -> sqlQuery,$this -> connectionString); 
    $this -> sqlQuery = NULL; 
    return $this -> dataSet; 
    #return $this -> sqlQuery; 
} 

function insertInto($tableName,$values) { 
    $i = NULL; 

    $this -> sqlQuery = 'INSERT INTO '.$tableName.' VALUES ('; 
    $i = 0; 
    while($values[$i]["val"] != NULL && $values[$i]["type"] != NULL) { 
     if($values[$i]["type"] == "char") { 
      $this -> sqlQuery .= "'"; 
      $this -> sqlQuery .= $values[$i]["val"]; 
      $this -> sqlQuery .= "'"; 
     } 
     else if($values[$i]["type"] == 'int') { 
      $this -> sqlQuery .= $values[$i]["val"]; 
     } 
     $i++; 
     if($values[$i]["val"] != NULL) { 
      $this -> sqlQuery .= ','; 
     } 
    } 
    $this -> sqlQuery .= ')'; 
      #echo $this -> sqlQuery; 
    mysql_query($this -> sqlQuery,$this ->connectionString); 
      return $this -> sqlQuery; 
    #$this -> sqlQuery = NULL; 
} 

function selectFreeRun($query) { 
    $this -> dataSet = mysql_query($query,$this -> connectionString); 
    return $this -> dataSet; 
} 

function freeRun($query) { 
    return mysql_query($query,$this -> connectionString); 
    } 
} 
?> 

và tệp cấu hình ...

<?php 
class Dbconfig { 
    protected $serverName; 
    protected $userName; 
    protected $passCode; 
    protected $dbName; 

    function Dbconfig() { 
     $this -> serverName = 'localhost'; 
     $this -> userName = 'root'; 
     $this -> passCode = 'pass'; 
     $this -> dbName = 'dbase'; 
    } 
} 
?> 
+0

Cảm ơn bạn rất nhiều, thực sự đánh giá cao bạn dành thời gian để giúp đỡ! – Odyss3us

2
  • Tạo hai lớp. Một để làm việc với cơ sở dữ liệu, thứ hai để quản lý dữ liệu Người dùng hoặc Xác thực.
  • Đối với lớp SQL tạo ra phương pháp kết nối(), truy vấn(), lấy() vv
  • Đối với tài lớp tạo ra phương pháp nhận được ($ id) vv
+0

Cảm ơn bạn đã giúp đỡ! – Odyss3us

5

Alright, một lời khuyên:

Làm mọi thứ vì một lý do. Không sử dụng những thứ bạn không biết. Đi và tìm hiểu chúng để thay thế.

Người ta có thể cung cấp cho bạn một câu trả lời cho câu hỏi cụ thể này, nhưng cho đến khi bạn không biết những gì Object Oriented phương tiện và lý do tại sao có những classes ở tất cả, bạn không nên sử dụng chúng.

+1

Thanx để được tư vấn! Tại thời điểm tôi đang học như tôi đi, đó là lý do tại sao tôi cần một số trợ giúp. – Odyss3us

2

Có vấn đề với cách viết mã của bạn, không phải với lớp. Hãy xem xét kỹ hơn dòng này:

$array = mysql_fetch_array($result); 

Đây là biến thời gian đầu tiên $result xuất hiện trên hàm. Do đó, không thể giao tiếp với cơ sở dữ liệu.

Một pseudo-code có thể sẽ là:

  • kết nối đến máy chủ DB
  • truy vấn cơ sở dữ liệu
  • lấy kết quả
  • trở lại lĩnh vực uid.

Có xem xét các tài liệu có liên quan đầu tiên:

+0

Thanx, sẽ làm! – Odyss3us

2

Hãy thử sau:

ini_set("display_errors", 'off'); 
    ini_set("error_reporting",E_ALL); 

class myclass { 
    function myclass() {  
     $user = "root"; 
     $pass = ""; 
     $server = "localhost"; 
     $dbase = ""; 

      $conn = mysql_connect($server,$user,$pass); 
      if(!$conn) 
     { 
      $this->error("Connection attempt failed"); 
     } 
     if(!mysql_select_db($dbase,$conn)) 
     { 
      $this->error("Dbase Select failed"); 
     } 
     $this->CONN = $conn; 
     return true; 
    } 
    function close() { 
     $conn = $this->CONN ; 
     $close = mysql_close($conn); 
     if(!$close) 
     { 
      $this->error("Connection close failed"); 
     } 
     return true; 
    }  function sql_query($sql="") {  
     if(empty($sql)) 
     { 
      return false; 
     } 
     if(empty($this->CONN)) 
     { 
      return false; 
     } 
     $conn = $this->CONN; 
     $results = mysql_query($sql,$conn) or die("Query Failed..<hr>" . mysql_error()); 
     if(!$results) 
     { 
      $message = "Bad Query !"; 
      $this->error($message); 
      return false; 
     } 
     if(!(eregi("^select",$sql) || eregi("^show",$sql))) 
     { 
      return true; 
     } 
     else 
     { 
      $count = 0; 
      $data = array(); 
      while($row = mysql_fetch_array($results)) 
      { 
       $data[$count] = $row; 
       $count++; 
      } 
      mysql_free_result($results); 
      return $data; 
     } 
    }  
} 
$obj = new myclass(); 
$obj->sql_query(""); 
0

Bạn có thể sử dụng lớp cơ sở dữ liệu tùy chỉnh.
Code:

<?php 
Class Database 
{ 
    private $user ; 
    private $host; 
    private $pass ; 
    private $db; 

    public function __construct() 
    { 
     $this->user = "root"; 
     $this->host = "localhost"; 
     $this->pass = ""; 
     $this->db = "db_blog"; 
    } 
    public function connect() 
    { 
     $link = mysql_connect($this->user, $this->host, $this->pass, $this->db); 
     return $link; 
    } 
} 
?> 
Các vấn đề liên quan