Init Repo

This commit is contained in:
root
2019-09-06 23:53:10 +08:00
commit f0ef89dfbb
7905 changed files with 914138 additions and 0 deletions

View File

@ -0,0 +1,12 @@
<?php
interface LtDbConnectionAdapter
{
/**
* @todo 兼容使用Unix Domain Socket方式连接数据库可以不指定port
*/
public function connect($connConf);
public function exec($sql, $connResource);
public function query($sql, $connResource);
public function lastInsertId($connResource);
public function escape($sql, $connResource);
}

View File

@ -0,0 +1,34 @@
<?php
class LtDbConnectionAdapterMysql implements LtDbConnectionAdapter
{
public function connect($connConf)
{
return mysql_connect($connConf["host"] . ":" . $connConf["port"], $connConf["username"], $connConf["password"]);
}
public function exec($sql, $connResource)
{
return mysql_query($sql, $connResource) ? mysql_affected_rows($connResource) : false;
}
public function query($sql, $connResource)
{
$result = mysql_query($sql, $connResource);
$rows = array();
while($row = mysql_fetch_assoc($result))
{
$rows[] = $row;
}
return $rows;
}
public function lastInsertId($connResource)
{
return mysql_insert_id($connResource);
}
public function escape($sql, $connResource)
{
return mysql_real_escape_string($sql, $connResource);
}
}

View File

@ -0,0 +1,35 @@
<?php
class LtDbConnectionAdapterMysqli implements LtDbConnectionAdapter
{
public function connect($connConf)
{
return new mysqli($connConf["host"], $connConf["username"], $connConf["password"], $connConf["dbname"], $connConf["port"]);
}
public function exec($sql, $connResource)
{
$connResource->query($sql);
return $connResource->affected_rows;
}
public function query($sql, $connResource)
{
$rows = array();
$result = $connResource->query($sql);
while($row = $result->fetch_assoc())
{
$rows[] = $row;
}
return $rows;
}
public function lastInsertId($connResource)
{
return $connResource->insert_id;
}
public function escape($sql, $connResource)
{
return mysqli_real_escape_string($connResource, $sql);
}
}

View File

@ -0,0 +1,65 @@
<?php
class LtDbConnectionAdapterPdo implements LtDbConnectionAdapter
{
public function connect($connConf)
{
// $option = array(PDO::ATTR_PERSISTENT => true);
if (isset($connConf['pconnect']) && true == $connConf['pconnect'])
{
$option[PDO::ATTR_PERSISTENT] = true;
}
else
{
$option[PDO::ATTR_PERSISTENT] = false;
}
switch ($connConf['adapter'])
{
case "pdo_mysql":
$dsn = "mysql:host={$connConf['host']};dbname={$connConf['dbname']}";
break;
case "pdo_sqlite":
$connConf["host"] = rtrim($connConf["host"], '\\/') . DIRECTORY_SEPARATOR;
if (!is_dir($connConf["host"]))
{
if (!@mkdir($connConf["host"], 0777, true))
{
trigger_error("Can not create {$connConf['host']}");
}
}
$dsn = "{$connConf['sqlite_version']}:{$connConf['host']}{$connConf['dbname']}";
break;
case "pdo_pgsql":
$dsn = "pgsql:host={$connConf['host']} port={$connConf['port']} dbname={$connConf['dbname']} user={$connConf['username']} password={$connConf['password']}";
break;
case "odbc":
$dsn = "odbc:" . $connConf["host"];
break;
}
return new PDO($dsn, $connConf['username'], $connConf['password'], $option);
}
public function exec($sql, $connResource)
{
return $connResource->exec($sql);
}
public function query($sql, $connResource)
{
return $connResource->query($sql)->fetchAll(PDO::FETCH_ASSOC);
}
/**
*
* @todo pgsql support
*/
public function lastInsertId($connResource)
{
return $connResource->lastInsertId();
}
public function escape($sql, $connResource)
{
// quote返回值带最前面和最后面的单引号, 这里去掉, DbHandler中加
return trim($connResource->quote($sql), "'");
}
}

View File

@ -0,0 +1,46 @@
<?php
class LtDbConnectionAdapterPgsql implements LtDbConnectionAdapter
{
public function connect($connConf)
{
if (isset($connConf['pconnect']) && true == $connConf['pconnect'])
{
$func = 'pg_pconnect';
}
else
{
$func = 'pg_connect';
}
return $func("host={$connConf['host']} port={$connConf['port']} user={$connConf['username']} password={$connConf['password']}");
}
public function exec($sql, $connResource)
{
$result = pg_query($connResource, $sql);
return pg_affected_rows($result);
}
public function query($sql, $connResource)
{
$result = pg_query($connResource, $sql);
return pg_fetch_all($result);
}
// SELECT CURRVAL(
// pg_get_serial_sequence('my_tbl_name','id_col_name'));"
// ------------------------------------------------------
// CREATE FUNCTION last_insert_id() RETURNS bigint AS $$
// SELECT lastval();
// $$ LANGUAGE SQL VOLATILE;
public function lastInsertId($connResource)
{
$result = pg_query($connResource, "SELECT lastval()");
$row = pg_fetch_array($result, 0, PGSQL_NUM);
return $row[0];
}
public function escape($sql, $connResource)
{
return pg_escape_string($sql);
}
}

View File

@ -0,0 +1,72 @@
<?php
/**
* Sqlite 预定义了类 SQLiteDatabase 本实现没有使用。
* 这里使用的全部是过程函数。
* 无论是函数还是类本实现只支持sqlite的2.x系列版本。
* php5.3新增扩展sqlite3用来支持3.x版本。
* PDO则同时支持2.x和3.x版本。
*/
class LtDbConnectionAdapterSqlite implements LtDbConnectionAdapter
{
public function connect($connConf)
{
if (isset($connConf['pconnect']) && true == $connConf['pconnect'])
{
$func = 'sqlite_popen';
}
else
{
$func = 'sqlite_open';
}
$connConf["host"] = rtrim($connConf["host"], '\\/') . DIRECTORY_SEPARATOR;
if(!is_dir($connConf["host"]))
{
if(!@mkdir($connConf["host"], 0777, true))
{
trigger_error("Can not create {$connConf['host']}");
}
}
$error = '';
$connResource = $func($connConf["host"] . $connConf["dbname"], 0666, $error);
if (!$connResource)
{
trigger_error($error, E_USER_ERROR);
}
else
{
return $connResource;
}
}
public function exec($sql, $connResource)
{
if(empty($sql))
{
return 0;
}
sqlite_exec($connResource, $sql);
// echo '<pre>';
// print_r(debug_backtrace());
// debug_print_backtrace();
// echo '</pre>';
// delete from table 结果为0原因未知。
// 使用 delete from table where 1 能返回正确结果
return sqlite_changes($connResource);
}
public function query($sql, $connResource)
{
$result = sqlite_query($connResource, $sql, SQLITE_ASSOC);
return sqlite_fetch_all($result, SQLITE_ASSOC);
}
public function lastInsertId($connResource)
{
return sqlite_last_insert_rowid($connResource);
}
public function escape($sql, $connResource)
{
return sqlite_escape_string($sql);
}
}