Intento realizar pruebas de conexión usando POO con mysqli, trabajo en ubuntu 12.04 lts, php 5.5 en la configuración de php tengo habilitado el mysqli asi:
Cita:
en una primera prueba me sale la conexión excelente:MysqlI Support enabled
Client API library version 5.5.37
Active Persistent Links 0
Inactive Persistent Links 0
Active Links 0
Client API header version 5.5.35
MYSQLI_SOCKET /var/run/mysqld/mysqld.sock
Directive Local Value Master Value
mysqli.allow_local_infile On On
mysqli.allow_persistent On On
mysqli.default_host no value no value
mysqli.default_port 3306 3306
mysqli.default_pw no value no value
mysqli.default_socket /var/run/mysqld/mysqld.sock /var/run/mysqld/mysqld.sock
mysqli.default_user no value no value
mysqli.max_links Unlimited Unlimited
mysqli.max_persistent Unlimited Unlimited
mysqli.reconnect Off Off
Client API library version 5.5.37
Active Persistent Links 0
Inactive Persistent Links 0
Active Links 0
Client API header version 5.5.35
MYSQLI_SOCKET /var/run/mysqld/mysqld.sock
Directive Local Value Master Value
mysqli.allow_local_infile On On
mysqli.allow_persistent On On
mysqli.default_host no value no value
mysqli.default_port 3306 3306
mysqli.default_pw no value no value
mysqli.default_socket /var/run/mysqld/mysqld.sock /var/run/mysqld/mysqld.sock
mysqli.default_user no value no value
mysqli.max_links Unlimited Unlimited
mysqli.max_persistent Unlimited Unlimited
mysqli.reconnect Off Off
Código PHP:
<?php
$mysqli = mysqli_connect('localhost', 'root', '12345678', 'mvc');
/* Comprueba la conexión */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* Selecciona todas las filas */
$result = $mysqli->query("SELECT * FROM usuarios");
printf("Affected rows (SELECT): %d<br>", $mysqli->affected_rows);
$result->close();
mysqli_close($mysqli);
?>
Código PHP:
<?php
abstract class DBAbstractModel{
private static $db_host = 'localhost';
private static $db_user = 'root';
private static $db_pass = '12345678';
protected $db_name = 'mvc';
protected $query;
protected $rows = array();
private $conn;
# metodos abstractos para ABM de clases que hereden
abstract protected function get();
abstract protected function set();
abstract protected function edit();
abstract protected function delete();
#Los siguientes metodos pueden definirse con exactitud y no son abstractos
#Conectar a la base de datos
private function open_connection(){
$this->conn = new mysqli(self::$db_host, self::$db_user, self::$db_pass, $this->db_name);
}
#Desconectar la base de datos
private function close_connection(){
$this->conn->close();
}
#Ejecutar un query simple de tipo INSERT, DELETE UPDATE
protected function execute_simple_query(){
$this->open_connection();
$this->conn->query( $this->query );
$this->close_connection();
}
#traer resultados de una consulta en un array
protected function get_results_from_query(){
$this->open_connection();
$result = $this->conn->query($this->query);
while ($this->rows[] = $result->fetch_assoc()) {
$result->close;
$this->close_connection();
}
array_pop($this->rows);
}
}
?>
[Thu Apr 24 20:56:45.444868 2014] [:error] [pid 31440] [client 127.0.0.1:35325] PHP Warning: mysqli::close(): Couldn't fetch mysqli in /var/www/pruebas/poo/db_abstract_model.php on line 25, referer: http://localhost/pruebas/poo/