2010-07-12 17 views
10

Estoy tratando de obtener un ID de usuario de una base de datos dentro de una clase, pero tengo muy poca o ninguna experiencia con clases, ¿cómo podría obtener el uid del DB y luego devolver el uid?Clase de conexión de base de datos PHP

así que básicamente algo como esto,

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; 
    } 
} 

Como dije, estoy todavía nuevo a clases, por lo que cualquier consejo o ayuda sería muy apreciada!

¡Gracias por adelantado!

Respuesta

31

En primer lugar construir una biblioteca de clases de MySQL ... satisfaciendo los requisitos como en esta pieza de muestra:

<?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); 
    } 
} 
?> 

y el archivo de configuración ...

<?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

¡Muchas gracias, realmente aprecio que se tome el tiempo para ayudar! – Odyss3us

2
  • Crea dos clases. Uno para trabajar con la base de datos, el segundo para administrar los datos de usuario o de autenticación.
  • Para la clase de SQL crear métodos connect(), consulta(), fetch(), etc
  • Para la clase de usuario Crear métodos get ($ id) etc
+0

Gracias por ayudar! – Odyss3us

5

bien, un consejo:

Haz todo por un motivo. No uses cosas que no sabes. Ve y aprende en su lugar.

Uno le puede dar una respuesta a esta pregunta específica, pero hasta que no saben qué Object Oriented medios y por qué hay classes en absoluto, que no debe usarlos.

+1

¡Gracias por el consejo! Por el momento estoy aprendiendo sobre la marcha, por lo que necesitaba ayuda. – Odyss3us

2

Existe un problema con la forma en que se escribe el código, no con la clase. Echar un vistazo más de cerca a esta línea:

$array = mysql_fetch_array($result); 

Esta es la primera vez que la variable $result aparece en la función. Por lo tanto, no es posible comunicarse con la base de datos.

Una posible pseudo-código sería:

  • conectarse al servidor de base de datos
  • consulta la base de datos
  • buscar a los resultados
  • retorno al campo uid.

Tener un vistazo a la documentación pertinente en primer lugar:

+0

¡Gracias, lo haré! – Odyss3us

2

seguir los siguientes pasos:

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

Puede utilizar la clase base de datos personalizada.
Código:

<?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; 
    } 
} 
?> 
Cuestiones relacionadas