Enrique: me han sido muy utiles tus comentarios.......
... quisiera hacer lo que decis de la separacion en dos clases porque de hecho ahora agregué operaciones mas especificas de MySQL asi que lo haré como dices en cuanto entienda un poco mas
Aca la ultima version [hay una mas....fijate mas abajo por favor] que funciona perfecto con mi lote de pruebas:
Código PHP:
<?php
class Database
{
private static $_instancia;
private $_con;
private $_user;
private $_pass;
private $_server = 'localhost';
private $_db;
private $_sql;
private $_resultado;
private $_total;
private $_pos = 0;
/* Si es privado, no se usa nunca */
private function __construct(){}
public static function getInstance()
{
if (!isset(self::$_instancia)) {
$obj = __CLASS__;
self::$_instancia = new $obj;
}
return self::$_instancia;
}
public function setServer($server)
{
$this->_server = $server;
}
public function setUser($user)
{
$this->_user = $user;
}
public function setPass($pass)
{
$this->_pass=$pass;
}
public function connect($db)
{
if (!isset($this->_con)){
$this->_db = $db;
$this->_con = mysql_connect(
$this->_server,
$this->_user,
$this->_pass) or die(mysql_error()
);
mysql_select_db($db) or die(mysql_error());
}
}
public function execute($sql)
{
$this->_sql = $sql;
$this->_resultado = mysql_query($this->_sql);
if (strtolower($consulta[0]) == 's'){
$this->_total = mysql_num_rows($this->_resultado);
}else{
$this->_total = mysql_affected_rows($this->_con);
}
}
public function next()
{
$this->_pos++;
}
public function prev()
{
$this->pos--;
}
public function getTotal()
{
return $this->_total;
}
public function getOne($campo)
{
return mysql_result($this->_resultado,$this->_pos,$campo);
}
public function getMulti() // get into an array
{
return mysql_fetch_array($this->_resultado);
}
public function insert ($my_table, $my_array) { // mysql_insert_array: as opposite of mysql_fetch_array:
$keys = array_keys($my_array);
$values = array_values($my_array);
$sql = 'INSERT INTO ' . $my_table .' VALUES ("' . implode('","', $values) . '")';
echo $sql;
$this->execute ($sql);
}
public function goRow ($fila_num){
return mysql_data_seek ($this->_resultado, $fila_num);
}
public function fetchRow (){ // se trae una fila Y deja los campos en un array
return mysql_fetch_assoc($this->_resultado);
}
private function __clone()
{
throw new Exception('No se permite clonar');
}
}
?>