PHP学习教程文章简介: 同时支持三个MySQL+SQLite+PDO的PHP数据库类使用方法: // mysql connect $db = new SQL(mysql:host=localhost;database=21andy_blog;, 21andy.com_user, 21andy.com_password); // PDO SQLite3 connect $db = new SQL(pdo:database=/21andy.com/21andy.s

同时支持三个MySQL+SQLite+PDO的PHP数据库类使用方法:

// mysql connect

$db = new SQL('mysql:host=localhost;database=21andy_blog;', '21andy.com_user', '21andy.com_password');

// PDO SQLite3 connect

$db = new SQL('pdo:database=/21andy.com/21andy.sqlite3;');

// SQLite2 connect

$db = new SQL('sqlite:database=/21andy.com/21andy.sqlite;');

sqldbs.class.php文件

/*

SQL Buddy - Web based MySQL administration

sqldbs.class.php

- sql class

MIT license

*/

class SQL {

var $adapter = "";

var $method = "";

var $version = "";

var $conn = "";

var $options = "";

var $errorMessage = "";

var $db = "";

function SQL($connString, $user = "", $pass = "") {

list($this->adapter, $options) = explode(":", $connString, 2);

if ($this->adapter != "sqlite") {

$this->adapter = "mysql";

}

$optionsList = explode(";", $options);

foreach ($optionsList as $option) {

list($a, $b) = explode("=", $option);

$opt[$a] = $b;

}

$this->options = $opt;

$database = (array_key_exists("database", $opt)) ? $opt['database'] : "";

if ($this->adapter == "sqlite" && substr(sqlite_libversion(), 0, 1) == "3" && class_exists("PDO") && in_array("sqlite", PDO::getAvailableDrivers())) {

$this->method = "pdo";

try

{

$this->conn = new PDO("sqlite:" . $database, null, null, array(PDO::ATTR_PERSISTENT => true));

}

catch (PDOException $error) {

$this->conn = false;

$this->errorMessage = $error->getMessage();

}

} else if ($this->adapter == "sqlite" && substr(sqlite_libversion(), 0, 1) == "2" && class_exists("PDO") && in_array("sqlite2", PDO::getAvailableDrivers())) {

$this->method = "pdo";

try

{

$this->conn = new PDO("sqlite2:" . $database, null, null, array(PDO::ATTR_PERSISTENT => true));

}

catch (PDOException $error) {

$this->conn = false;

$this->errorMessage = $error->getMessage();

}

} else if ($this->adapter == "sqlite") {

$this->method = "sqlite";

$this->conn = sqlite_open($database, 0666, $sqliteError);

} else {

$this->method = "mysql";

$host = (array_key_exists("host", $opt)) ? $opt['host'] : "";

$this->conn = @mysql_connect($host, $user, $pass);

}

if ($this->conn && $this->method == "pdo") {

$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);

}

if ($this->conn && $this->adapter == "mysql") {

$this->query("SET NAMES 'utf8'");

}

if ($this->conn && $database) {

$this->db = $database;

}

}

function isConnected() {

return ($this->conn !== false);

}

function close() {

return $this->disconnect();

}

function disconnect() {

if ($this->conn) {

if ($this->method == "pdo") {

$this->conn = null;

} else if ($this->method == "mysql") {

mysql_close($this->conn);

$this->conn = null;

} else if ($this->method == "sqlite") {

sqlite_close($this->conn);

$this->conn = null;

}

}

}

function getAdapter() {

return $this->adapter;

}

function getMethod() {

return $this->method;

}

function getOptionValue($optKey) {

if (array_key_exists($optKey, $this->options)) {

return $this->options[$optKey];

} else {

return false;

}

}

function selectDB($db) {

if ($this->conn) {

if ($this->method == "mysql") {

$this->db = $db;

return (mysql_select_db($db));

} else {

return true;

}

} else {

return false;

}

}

function query($queryText) {

if ($this->conn) {

if ($this->method == "pdo") {

$queryResult = $this->conn->prepare($queryText);

if ($queryResult)

$queryResult->execute();

同时支持三个mysql+sqlite+pdo的php数据库类_同时支持三个MySQL+SQLite+PDO的PHP数据库类...相关推荐

  1. mysql数据库在线测试_测试面试题集-MySQL数据库灵魂拷问

    VOL 162 25 2020-09 今天距2021年97天 这是ITester软件测试小栈第162次推文 孤单北半球 From ITester软件测试小栈 00:00 04:08 本文3905字,阅 ...

  2. mysql数据库减肥_给数据减肥让MySQL数据库跑的更快

    摘要:如果在比较小的列上设置索引的话,其索引所占用的资源也会比较少.那么数据库管理员该如何给自己的数据减肥呢?对此笔者有如下几个建议. 在数据库优化工作中,使数据尽可能的小,使表在硬盘上占据的空间尽可 ...

  3. mysql数据库减肥_给数据减肥 让 MySQL 数据库跑的更快

    (点击上方公众号,可快速关注) 来源:it168 tech.it168.com/a2011/0302/1161/000001161945.shtml 在数据库优化工作中,使数据尽可能的小,使表在硬盘上 ...

  4. mysql中decimal不能为空吗_程序员,知道Mysql中事务ACID的原理吗?

    点击上方"linkoffer", 选择关注公众号高薪职位第一时间送达 引言 照例,我们先来一个场景~ 面试官:"知道事务的四大特性么?" 你:"懂,A ...

  5. mysql改表字段类型导致数据丢失_故障分析 | 记一次 MySQL 主从双写导致的数据丢失问题【转】...

    一.问题起源 不久前用户反馈部门的 MySQL 数据库发生了数据更新丢失.为了解决这个问题,当时对用户使用的场景进行了分析.发现可能是因为用户在两台互为主从的机器上都进行了写入导致的数据丢失. 如图所 ...

  6. mysql重装系统后以前的数据_系统重装后,Mysql数据库重装加载原来数据库

    mysql 5.6 后热数据的加载 mysql 5.6 后热数据的加载 转自:http://blog.itpub.net/20892230/viewspace-2127469/ 故障现象:在数据库重启 ...

  7. 用友mysql数据库安装_如何重新安装和恢复Mysql数据库

    由于更换服务器,需要对Mysql重新安装,并恢复以前的数据,或者新项目冲突,提示要卸载MySQL以便它自身MySQL安装. -------------------------------------- ...

  8. mysql设置表名字为占位符_这可能是把MySQL存储引擎讲解的最清楚的一篇文章了

    存储引擎是MySQL的组件,用于处理不同表类型的SQL操作.不同的存储引擎提供不同的存储机制.索引技巧.锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能. 使用哪一种引擎可以灵活选择,一个数据 ...

  9. mysql数据库代码_【代码总结】MYSQL数据库的常见操作

    ============================== MYSQL数据库的常见操作 ============================== 一.mysql的连接与关闭 -h:指定所连接的服 ...

最新文章

  1. DT时代下[个推3.0]遵循的四个法则
  2. dx9 lock unlock效率太低_synchronized的缺陷,Lock的诞生
  3. ORACLE 11g 使用ROWNUM完美解决ORA-00600:内部错误代码
  4. LeetCode Algorithm 386. 字典序排数
  5. unity 调用 .dll 或 .so时遇到的问题
  6. SSM学习系列(五) Spring MVC 几种跳转方式
  7. C#中的delegate和event (转)
  8. fastNLP工具包, 快速实现序列标注模型
  9. base64与图片互换
  10. JAVA集合4(Map接口)
  11. 软考高项--第一章项目整体管理
  12. office创建数据透视表
  13. 计算机基础操作知识带答案,计算机应用基础知识试题带答案
  14. IDEA工具上传项目报:Push rejected: Push to origin/master was rejected
  15. Docker Swarm 练习:投票 App
  16. sqldbx mysql 乱码_使用PLSQL Developer和DbVisualizer、SQLDBx查询oracle数据库时出现乱码...
  17. Robotstudio 获取机器人D-H参数
  18. 触摸!天空龙 - 锻炼极速反应力
  19. Android 系统内的守护进程 - main类服务(1) : netd
  20. iOS——3DES的加密

热门文章

  1. ATS中的ComboHandler合并回源插件调研
  2. leetcode 179. 最大数
  3. [UT]Unit Test理解
  4. Castle ActiveRecord学习(四)延迟加载、分页查询、where条件
  5. 『转载』Debussy快速上手(Verdi相似)
  6. 统计文件种类数+获取子shell返回值的其它方法
  7. Entity Framework学习三:查询、插入、更新和删除操作
  8. CSS——float属性备忘笔记
  9. 关于java和c的选择结构和循环结构
  10. Javascript中二进制数据处理方法