wanglizhong
2025-05-05 9b8a7157bb9c401de973a4107f74ff3e723ec156
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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), "'");
    }
}