Salutare tuturor!
De ceva timp folosesc un fisier mysql.class.php in toate proiectele. Acest fisier imi usureaza foarte mult munca dar imi da probleme cu php5. Cateva functii sunt "vechi" si in viitor or sa fie scoase.
Rog pe cineva mai expert ca mine in OOP daca vrea sa modifice fisierul cu functii noi precum mysqli, etc.
Exemplu eroare generata de server dar scriptul din pagina index.php continua sa functioneze:
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /htdocs/msql/mysql.class.php on line 30
Fisier mysql.class.php:
<?php
class database {
private $host;
private $user;
private $pass;
private $name;
private $link;
private $error;
private $errno;
private $query;
function __construct($host, $user, $pass, $name = "", $conn = 1) {
$this->host = $host;
$this->user = $user;
$this->pass = $pass;
if (!empty($name)) {
$this->name = $name;
}
if ($conn == 1) {
$this->connect();
}
}
function __destruct() {
@mysql_close($this->link);
}
public function connect() {
if ($this->link = mysql_connect($this->host, $this->user, $this->pass)) {
if (!empty($this->name)) {
if (!mysql_select_db($this->name)) $this->exception("Could not connect to the database!");
}
} else {
$this->exception("Could not create database connection!");
}
}
public function close() {
@mysql_close($this->link);
}
public function query($sql) {
if ($this->query = @mysql_query($sql)) {
return $this->query;
} else {
$this->exception("Could not query database!");
return false;
}
}
public function num_rows($qid) {
if (empty($qid)) {
$this->exception("Could not get number of rows because no query id was supplied!");
return false;
} else {
return mysql_num_rows($qid);
}
}
public function fetch_array($qid) {
if (empty($qid)) {
$this->exception("Could not fetch array because no query id was supplied!");
return false;
} else {
$data = mysql_fetch_array($qid);
}
return $data;
}
public function fetch_array_assoc($qid) {
if (empty($qid)) {
$this->exception("Could not fetch array assoc because no query id was supplied!");
return false;
} else {
$data = mysql_fetch_array($qid, MYSQL_ASSOC);
}
return $data;
}
public function fetch_all_array($sql, $assoc = true) {
$data = array();
if ($qid = $this->query($sql)) {
if ($assoc) {
while ($row = $this->fetch_array_assoc($qid)) {
$data[] = $row;
}
} else {
while ($row = $this->fetch_array($qid)) {
$data[] = $row;
}
}
} else {
return false;
}
return $data;
}
public function last_id() {
if ($id = mysql_insert_id()) {
return $id;
} else {
return false;
}
}
private function exception($message) {
if ($this->link) {
$this->error = mysql_error($this->link);
$this->errno = mysql_errno($this->link);
} else {
$this->error = mysql_error();
$this->errno = mysql_errno();
}
if (PHP_SAPI !== 'cli') {
?>
<div class="alert-bad">
<div>Database Error</div>
<div>Message: <?php echo $message; ?></div>
<?php if (strlen($this->error) > 0): ?>
<div><?php echo $this->error; ?></div>
<?php endif; ?>
<div>Script: <?php echo @$_SERVER['REQUEST_URI']; ?></div>
<?php if (strlen(@$_SERVER['HTTP_REFERER']) > 0): ?>
<div><?php echo @$_SERVER['HTTP_REFERER']; ?></div>
<?php endif; ?>
</div>
<?php
} else {
echo "MYSQL ERROR: ".((isset($this->error) && !empty($this->error)) ? $this->error:'')."\n";
}
}
}
?>
Fisier index.php:
<?php
require_once('mysql.class.php');
$db = new database('localhost', 'root', 'password', 'datab');
$query = "SELECT * FROM users";
$result = $db->query($query);
if ($db->num_rows($result) > 0) {
while ($row = $db->fetch_array($result)) {
echo $row['user'].'<br />';
}
}
?>
Am incercat sa modific linia 30 in felul urmatorul:
if ($this->link = mysqli_connect($this->host, $this->user, $this->pass)) {
dar genereaza alte erori:
Deprecated: mysql_select_db(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /htdocs/msql/mysql.class.php on line 32 Warning: mysql_error() expects parameter 1 to be resource, object given in /htdocs/msql/mysql.class.php on line 109 Warning: mysql_errno() expects parameter 1 to be resource, object given in /htdocs/msql/mysql.class.php on line 110
Am modificat si liniile 32, 109 si 110:
Linia 32: if (!mysqli_select_db($this->name)) $this->exception("Could not connect to the database!");
Linia 109: $this->error = mysqli_error($this->link);
Linia 110: $this->errno = mysqli_errno($this->link);
Din pacate raman urmatoarele erori si scriptul din pagina index.php nu mai functioneaza:
Warning: mysqli_select_db() expects exactly 2 parameters, 1 given in /htdocs/msql/mysql.class.php on line 32
Database Error
Message: Could not connect to the database!
Script: /msql/
Database Error
Message: Could not query database!
Script: /msql/
Database Error
Message: Could not get number of rows because no query id was supplied!
Script: /msql/
mysql.class.txt
index.txt