2022-03-12 15:22:22 +08:00
|
|
|
<?php
|
2023-12-17 23:45:03 +08:00
|
|
|
|
2022-03-12 15:22:22 +08:00
|
|
|
//MySQL、MySQLi、SQLite 三合一数据库操作类
|
2023-12-17 23:45:03 +08:00
|
|
|
if(!defined('IN_CRONLITE')) {
|
|
|
|
exit();
|
2022-03-12 15:22:22 +08:00
|
|
|
}
|
|
|
|
|
2023-12-17 23:45:03 +08:00
|
|
|
$nomysqli = false;
|
|
|
|
|
|
|
|
if(defined('SQLITE') == true) {
|
|
|
|
class DB
|
|
|
|
{
|
|
|
|
public $link = null;
|
|
|
|
public $result = null;
|
|
|
|
public function __construct($db_file)
|
|
|
|
{
|
|
|
|
global $siteurl;
|
|
|
|
$this->link = new PDO('sqlite:' . ROOT . 'includes/sqlite/' . $db_file . '.db');
|
|
|
|
if (!$this->link) {
|
|
|
|
die('Connection Sqlite failed.\n');
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function fetch($q)
|
|
|
|
{
|
|
|
|
return $q->fetch();
|
|
|
|
}
|
|
|
|
public function get_row($q)
|
|
|
|
{
|
|
|
|
$sth = $this->link->query($q);
|
|
|
|
return $sth->fetch();
|
|
|
|
}
|
|
|
|
public function count($q)
|
|
|
|
{
|
|
|
|
$sth = $this->link->query($q);
|
|
|
|
return $sth->fetchColumn();
|
|
|
|
}
|
|
|
|
public function query($q)
|
|
|
|
{
|
|
|
|
return $this->result = $this->link->query($q);
|
|
|
|
}
|
|
|
|
public function affected()
|
|
|
|
{
|
|
|
|
return $this->result->rowCount();
|
|
|
|
}
|
|
|
|
public function error()
|
|
|
|
{
|
|
|
|
$error = $this->link->errorInfo();
|
|
|
|
return '[' . $error[1] . '] ' . $error[2];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} elseif(extension_loaded('mysqli') && $nomysqli == false) {
|
|
|
|
class DB
|
|
|
|
{
|
|
|
|
public $link = null;
|
|
|
|
|
|
|
|
public function __construct($db_host, $db_user, $db_pass, $db_name, $db_port)
|
|
|
|
{
|
|
|
|
|
2022-03-12 15:22:22 +08:00
|
|
|
$this->link = mysqli_connect($db_host, $db_user, $db_pass, $db_name, $db_port);
|
2023-12-17 23:45:03 +08:00
|
|
|
|
|
|
|
if (!$this->link) {
|
|
|
|
die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
|
|
|
|
}
|
|
|
|
|
2022-03-12 15:22:22 +08:00
|
|
|
//mysqli_select_db($this->link, $db_name) or die(mysqli_error($this->link));
|
2023-12-17 23:45:03 +08:00
|
|
|
|
|
|
|
|
|
|
|
mysqli_query($this->link, "set sql_mode = ''");
|
|
|
|
//字符转换,读库
|
|
|
|
mysqli_query($this->link, "set character set 'utf8'");
|
|
|
|
//写库
|
|
|
|
mysqli_query($this->link, "set names 'utf8'");
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
public function fetch($q)
|
|
|
|
{
|
|
|
|
return mysqli_fetch_assoc($q);
|
|
|
|
}
|
|
|
|
public function num_rows($result)
|
|
|
|
{
|
|
|
|
return mysqli_num_rows($result);
|
|
|
|
}
|
|
|
|
public function get_row($q)
|
|
|
|
{
|
|
|
|
$result = mysqli_query($this->link, $q);
|
|
|
|
return mysqli_fetch_assoc($result);
|
|
|
|
}
|
|
|
|
public function get_column($q)
|
|
|
|
{
|
|
|
|
$result = mysqli_query($this->link, $q);
|
|
|
|
$row = mysqli_fetch_array($result);
|
|
|
|
return $row[0];
|
|
|
|
}
|
|
|
|
public function count($q)
|
|
|
|
{
|
|
|
|
$result = mysqli_query($this->link, $q);
|
|
|
|
$count = mysqli_fetch_array($result);
|
|
|
|
return $count[0];
|
|
|
|
}
|
|
|
|
public function query($q)
|
|
|
|
{
|
|
|
|
return mysqli_query($this->link, $q);
|
|
|
|
}
|
|
|
|
public function escape($str)
|
|
|
|
{
|
|
|
|
return mysqli_real_escape_string($this->link, $str);
|
|
|
|
}
|
|
|
|
public function insert($q)
|
|
|
|
{
|
|
|
|
if(mysqli_query($this->link, $q)) {
|
|
|
|
return mysqli_insert_id($this->link);
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
public function affected()
|
|
|
|
{
|
|
|
|
return mysqli_affected_rows($this->link);
|
|
|
|
}
|
|
|
|
public function insert_array($table, $array)
|
|
|
|
{
|
|
|
|
$q = "INSERT INTO `$table`";
|
|
|
|
$q .= " (`" . implode("`,`", array_keys($array)) . "`) ";
|
|
|
|
$q .= " VALUES ('" . implode("','", array_values($array)) . "') ";
|
|
|
|
|
|
|
|
if(mysqli_query($this->link, $q)) {
|
|
|
|
return mysqli_insert_id($this->link);
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
public function error()
|
|
|
|
{
|
|
|
|
$error = mysqli_error($this->link);
|
|
|
|
$errno = mysqli_errno($this->link);
|
|
|
|
return '[' . $errno . '] ' . $error;
|
|
|
|
}
|
|
|
|
public function close()
|
|
|
|
{
|
|
|
|
$q = mysqli_close($this->link);
|
|
|
|
return $q;
|
|
|
|
}
|
|
|
|
}
|
2022-03-12 15:22:22 +08:00
|
|
|
} else { // we use the old mysql
|
2023-12-17 23:45:03 +08:00
|
|
|
class DB
|
|
|
|
{
|
|
|
|
public $link = null;
|
|
|
|
|
|
|
|
public function __construct($db_host, $db_user, $db_pass, $db_name, $db_port)
|
|
|
|
{
|
|
|
|
|
|
|
|
$this->link = @mysql_connect($db_host . ':' . $db_port, $db_user, $db_pass);
|
|
|
|
|
|
|
|
if (!$this->link) {
|
|
|
|
die('Connect Error (' . mysql_errno() . ') ' . mysql_error());
|
|
|
|
}
|
|
|
|
|
|
|
|
mysql_select_db($db_name, $this->link) or die(mysql_error($this->link));
|
|
|
|
|
|
|
|
mysql_query("set sql_mode = ''");
|
|
|
|
//字符转换,读库
|
|
|
|
mysql_query("set character set 'utf8'");
|
|
|
|
//写库
|
|
|
|
mysql_query("set names 'utf8'");
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
public function fetch($q)
|
|
|
|
{
|
|
|
|
return mysql_fetch_assoc($q);
|
|
|
|
}
|
|
|
|
public function num_rows($result)
|
|
|
|
{
|
|
|
|
return mysql_num_rows($result);
|
|
|
|
}
|
|
|
|
public function get_row($q)
|
|
|
|
{
|
|
|
|
$result = mysql_query($q, $this->link);
|
|
|
|
return mysql_fetch_assoc($result);
|
|
|
|
}
|
|
|
|
public function get_column($q)
|
|
|
|
{
|
|
|
|
$result = mysql_query($q, $this->link);
|
|
|
|
$row = mysql_fetch_array($result);
|
|
|
|
return $row[0];
|
|
|
|
}
|
|
|
|
public function count($q)
|
|
|
|
{
|
|
|
|
$result = mysql_query($q, $this->link);
|
|
|
|
$count = mysql_fetch_array($result);
|
|
|
|
return $count[0];
|
|
|
|
}
|
|
|
|
public function query($q)
|
|
|
|
{
|
|
|
|
return mysql_query($q, $this->link);
|
|
|
|
}
|
|
|
|
public function escape($str)
|
|
|
|
{
|
|
|
|
return mysql_real_escape_string($str, $this->link);
|
|
|
|
}
|
|
|
|
public function affected()
|
|
|
|
{
|
|
|
|
return mysql_affected_rows($this->link);
|
|
|
|
}
|
|
|
|
public function insert($q)
|
|
|
|
{
|
|
|
|
if(mysql_query($q, $this->link)) {
|
|
|
|
return mysql_insert_id($this->link);
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
public function insert_array($table, $array)
|
|
|
|
{
|
|
|
|
$q = "INSERT INTO `$table`";
|
|
|
|
$q .= " (`" . implode("`,`", array_keys($array)) . "`) ";
|
|
|
|
$q .= " VALUES ('" . implode("','", array_values($array)) . "') ";
|
|
|
|
|
|
|
|
if(mysql_query($q, $this->link)) {
|
|
|
|
return mysql_insert_id($this->link);
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
public function error()
|
|
|
|
{
|
|
|
|
$error = mysql_error($this->link);
|
|
|
|
$errno = mysql_errno($this->link);
|
|
|
|
return '[' . $errno . '] ' . $error;
|
|
|
|
}
|
|
|
|
public function close()
|
|
|
|
{
|
|
|
|
$q = mysql_close($this->link);
|
|
|
|
return $q;
|
|
|
|
}
|
|
|
|
}
|
2022-03-12 15:22:22 +08:00
|
|
|
|
|
|
|
}
|