PdoOne

其他类别 2025-08-17

单个类中的PHP和PDO的数据库访问对象包装器

PdoOne 。它是与SQL Server(2008 R2或更高),MySQL(5.7或更高)和Oracle(12.1或更高)兼容的PHP PDO库的简单包装器。

该图书馆试图尽可能快地工作。大多数操作都是简单的字符串/数组管理,并在PDO库的裸机中工作,但它还允许使用扩展EFTEC/ PdoOne ORM创建ORM。

bindParam(1,$_POST['name'],PDO::PARAM_STR); $stmt->execute(); $result = $stmt->get_result(); $products=[]; while($row = $result->fetch_assoc()) { $product[]=$row; } $stmt->close();">
 $ stmt = $ pdo -> prepare ( " SELECT * FROM myTable WHERE name = ? " );
$ stmt -> bindParam ( 1 , $ _POST [ ' name ' ], PDO :: PARAM_STR );
$ stmt -> execute ();
$ result = $ stmt -> get_result ();
$ products =[];
while ( $ row = $ result -> fetch_assoc ()) {
  $ product []= $ row ; 
}
$ stmt -> close ();

进入这个

PdoOne ->select("*") ->from("myTable") ->where("name = ?",[$_POST['name']]) ->toList();">
 $ products = $ PdoOne
    -> select ( " * " )
    -> from ( " myTable " )
    -> where ( " name = ? " ,[ $ _POST [ ' name ' ]]) 
    -> toList ();

或使用ORM(使用EFTEC/ PdoOne ORM库)

PdoOne()->generateCodeClass(['Product']); or using the cli. ::where("name = ?",[$_POST['name']]) ::toList();">
ProductRepo // this class was generated with echo $ PdoOne ()->generateCodeClass(['Product']); or using the cli.
    :: where ( " name = ? " ,[ $ _POST [ ' name ' ]])
    :: toList ();

目录

  • 单个类中的PHP和PDO的数据库访问对象包装器
  • 目录
    • 例子
    • 安装
      • 安装(使用作曲家)
      • (手动)安装
    • 如何创建连接?
      • OCI
    • 如何运行SQL命令?
      • 1。运行原始查询
      • 2。运行本机PDO语句
      • 3.使用查询构建器运行
      • 4。使用ORM运行
      • 5。以不同的模式运行查询
    • 如何使用日期值?
    • 如何运行交易?
    • 自定义查询
      • tableexist($ tableName)
      • StatValue($ tableName,$ columnname)
      • 列Ttable($ tableName)
      • ExourneKeyTable($ tableName)
      • createtable($ tableName,$ definity,$ priendarkey = null,$ extair ='',$ extairoutside ='')
      • tablesorted($ maxloop = 5,$ returnproblems = false,$ debugtrace = false)
      • 可验证的Eftable($ pdoinstance,$ tablename,$ deftable,$ deftablekey)
      • 外键
    • 查询构建器(DQL)
      • 选择($列)
      • 计数($ sql,$ arg ='*')
      • min($ sql,$ arg ='*')
      • max($ sql,$ arg ='*')
      • sum($ sql,$ arg ='*')
      • avg($ sql,$ arg ='*')
      • 独特($ diminter ='独特')
      • 来自($表)
      • where($ where,[$ arrayParameters = array()))
        • 其中()无参数。
        • 其中()带有由索引数组定义的参数。
        • 其中()使用关联数组
        • 其中()使用关联数组并命名参数
        • where()的示例
      • 订单($订单)
      • 小组($组)
      • 具有($ ake,[$ arrayParameters])
      • chain
        • rungen($ returnarray = true)
        • tolist($ pdomode)
  • TopStatement($ PDOMODE)
  • fetchloop($ callable,$ pdomode) * tometa() * tolistimple() * tolistKeyValue() * toresult() * firstScalar($ colname = null) * first() * first() * last() * sqlgen() * sqlgen()
    • 查询构建器(DML)
      • 插入($表,$架构,[$ values])
      • insertObject($ table,[$ declarativearray],$ excludeColumn = [])
      • 更新($$表,$架构,$ values,[$ schemawhere],[$ valueswhere])
      • delete([$ table],[$ schemawhere],[$ valueswhere])
    • 缓存
      • 如何配置它?
      • 使用APCU的示例
    • 顺序
      • 创建序列
      • 创建一个没有表的序列。
      • 使用序列
    • 字段
    • 加密
    • 如何在数据库中调试和跟踪错误?
      • 设置日志级别
      • 投掷错误
      • 获取最后一个查询
      • 生成日志文件
    • CLI
      • 作为CLI运行
      • 作为CLI相互作用
        • 例子
      • 运行CLI以生成存储库类。
      • CLI-CLASSCODE
      • CLI-SELECTCODE
      • cli arraycode
      • 克里·杰森
      • CLI-CSV
      • UI
      • 如何运行UI?
      • DDL数据库设计语言
      • 嵌套操作员
      • DQL数据库查询语言
      • DML数据库模型语言
      • 验证模型
      • 递归
        • 递归()
        • getRecursive()
        • HASRECURSIVE()
    • 基准(MySQL,估计)
    • 从3到4迁移
    • 错误常见问题解答
      • 未定义的错误:未定义的EFTEC_BASE PdoOne REPO :: COMPIELVERSION
    • 变革主义者

例子

exeppleticketPHP纸杯蛋糕示例搜索示例不同的方法

更多示例:

示例使用PdoOne MySQL php和PDO

安装

该库需要php 7.1及更高版本,并且需要扩展PDO和扩展PDO-MYSQL(MySQL),PDO-SQLSRV(SQL Server)或PDO-OCI(Oracle)

安装(使用作曲家)

编辑Composer.json下一个要求,然后更新作曲家。

PdoOne": "^4.0.1" } }">
  {
      "require" : {
        "eftec/ PdoOne " : " ^4.0.1 "
      }
  }

或使用CLI使用

作曲家需要eftec/ PdoOne

(手动)安装

只需从库中下载文件夹lib,然后放入您的文件夹项目即可。然后,您必须包括其中包含的所有文件。

如何创建连接?

如下创建类PdoOne的实例。然后,您可以使用方法Connect()或Open()打开连接()

PdoOne; // mysql $dao=new PdoOne ("mysql","127.0.0.1","root","abc.123","sakila",""); $conn->logLevel=3; // it is for debug purpose and it works to find problems. $dao->connect(); // sql server 10.0.0.1instance or (local)instance or machinenameinstance or machine (default instance) $dao=new PdoOne ("sqlsrv","(local)sqlexpress","sa","abc.123","sakila",""); $conn->logLevel=3; // it is for debug purpose and it works to find problems. $dao->connect(); // test (mockup) $dao=new PdoOne ("test","anyy","any","any","any",""); $dao->connect(); // oci (oracle) ez-connect. Remember that you must have installed Oracle Instant client and added to the path. $cs='(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = instancia1)))'; $dao=new PdoOne ("oci",$cs,"sa","abc.123"); // oracle uses the user as the schema $conn->logLevel=3; // it is for debug purpose and it works to find problems. $dao->connect(); // oci (oracle) tsnnames (the environment variables TNS_ADMIN and PATH must be correctly configured), also tnsnames.ora must exists. $cs='instancia1'; $dao=new PdoOne ("oci",$cs,"sa","abc.123"); // oracle uses the user as the schema $conn->logLevel=3; // it is for debug purpose and it works to find problems. $dao->connect(); ">
 use eftec  PdoOne ;
// mysql
$ dao = new PdoOne ( " mysql " , " 127.0.0.1 " , " root " , " abc.123 " , " sakila " , "" );
$ conn -> logLevel = 3 ; // it is for debug purpose and it works to find problems.
$ dao -> connect ();

// sql server 10.0.0.1instance or (local)instance or machinenameinstance or machine (default instance)
$ dao = new PdoOne ( " sqlsrv " , " (local)sqlexpress " , " sa " , " abc.123 " , " sakila " , "" );
$ conn -> logLevel = 3 ; // it is for debug purpose and it works to find problems.
$ dao -> connect ();

// test (mockup)
$ dao = new PdoOne ( " test " , " anyy " , " any " , " any " , " any " , "" );
$ dao -> connect ();

// oci (oracle) ez-connect. Remember that you must have installed Oracle Instant client and added to the path.

$ cs = ' (DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = instancia1))) ' ;
$ dao = new PdoOne ( " oci " , $ cs , " sa " , " abc.123 " ); // oracle uses the user as the schema
$ conn -> logLevel = 3 ; // it is for debug purpose and it works to find problems.
$ dao -> connect ();

// oci (oracle) tsnnames (the environment variables TNS_ADMIN and PATH must be correctly configured), also tnsnames.ora must exists.
$ cs = ' instancia1 ' ;
$ dao = new PdoOne ( " oci " , $ cs , " sa " , " abc.123 " ); // oracle uses the user as the schema
$ conn -> logLevel = 3 ; // it is for debug purpose and it works to find problems.
$ dao -> connect ();

在哪里

$ dao = new PdoOne (“ mysql”,“ 127.0.0.1”,“ root”,“ abc.123”,“ sakila”,“”);

  • mySQL ”是MySQL数据库。它还允许SQLSRV(用于SQL Server)或“ OCI”
  • 127.0.0.1是数据库的服务器。
  • 是用户
  • ABC.123是用户根的密码。
  • Sakila是使用的数据库。
  • “”(可选)它可能是一个日志文件,例如c: temp log.txt

OCI

Oracle安装很棘手。在Windows中,从Oracle Home的bin文件夹中,您必须将所有DLL复制到PHP文件夹和Apache文件夹。

如何运行SQL命令?

1。运行原始查询

使用方法Runrawquery() ,我们可以在有或没有参数的情况下直接执行命令到PDO。它可以返回pdostatement数组。当我们想要速度时,这很有用。

runrawquery($ rowsql,$ param,$ returnarray,$ fetchmode,$ fetchargument)

字符串$ rawSQL执行阵列的查询| null $ param [type1,value1,type2,value2]或[name1 => value,name2 = value2] bool $ returnaray如果为true(默认),则返回一个数组。如果false,则返回pdostatement int $ fetchmode表示获取模式。示例:pdo :: fetch_assoc null $ fetchargument fetchmode的参数。

 $ sql = ' select * from table where id=1 ' ;
$ pdoStatement = $ PdoOne -> runRawQuery ( $ sql ,[], false );  // [] are the parameters

但是我们可以将其更改为返回一个数组

 $ sql = ' select * from table where id=1 ' ;
$ values = $ PdoOne -> runRawQuery ( $ sql );  // [] are the parameters

我们也可以传递参数。

 $ values = $ con -> runRawQuery ( ' select * from table where id=? ' ,[ 20 ]); // with parameter
$ values = $ con -> runRawQuery ( ' select * from table where id=:name ' ,[ ' name ' => 20 ]); // with named parameter
$ values = $ con -> runRawQuery ( ' select * from table ' ,[]); // without parameter.

请注意,该库使用已准备好的语句,因此它没有SQL注入(如果使用参数)

runRawQuery("select * from table where name=:name",['name'=> $name]); // it works.✅ $values=$con->runRawQuery("select * from table where name=?",[$name]); // it works ok.✅ $values=$con->runRawQuery("select * from table where name='$name'"); // it will crash.">
 $ name = " O'hara " ;
$ values = $ con -> runRawQuery ( " select * from table where name=:name " ,[ ' name ' => $ name ]); // it works.✅
$ values = $ con -> runRawQuery ( " select * from table where name=? " ,[ $ name ]); // it works ok.✅
$ values = $ con -> runRawQuery ( " select * from table where name=' $ name ' " ); // it will crash.

2。运行本机PDO语句

使用方法runquery(),我们可以在PDO中执行准备好的语句。当我们想将参数传递给它时,这很有用。 Runquery()需要准备PDO。

除非您已经使用PDO语句,否则不建议使用此方法,并且不想适应所有代码。

PdoOne->prepare($sql); $productName="Cocacola"; $stmt->bind_param("s",$productName); // s stand for a string. Also i =integer, d = double and b=blob $rows=$ PdoOne ->runQuery($stmt); $allRows=$rows->fetch_all(PDO::FETCH_ASSOC);">
 $ sql = " insert into `product`(name) values(?) " ;
$ stmt = $ PdoOne -> prepare ( $ sql );
$ productName = " Cocacola " ;
$ stmt -> bind_param ( " s " , $ productName ); // s stand for a string. Also i =integer, d = double and b=blob
$ rows = $ PdoOne -> runQuery ( $ stmt );
$ allRows = $ rows -> fetch_all ( PDO :: FETCH_ASSOC );

3.使用查询构建器运行

您可以使用查询构建器来构建命令。您可以查看有关查询构建器(DQL)的章节,以获取更多信息。

PdoOne->set(['name'=>'cocacola']) ->from('product') ->insert(); ">
 // query builder
$ PdoOne -> set ([ ' name ' => ' cocacola ' ])
    -> from ( ' product ' )
    -> insert ();

4。使用ORM运行

库eftec PdoOne orm允许创建表的[orm] (#orm)。如果您生成了ORM,则可以使用下一个代码

ProductRepo:: toList ([ ' category ' => ' drink ' ]);

其中productrepo是使用ORM生成的服务类。

5。以不同的模式运行查询

默认情况下, PdoOne在模式pdo :: fetch_assoc中执行查询,您可以通过运行查询来更改为:

 $ pdo -> setFechMode ( PDO :: FETCH_CLASS , ' stdClass ' )-> runRawQuery ( $ query );
// or you can run as
$ pdo -> runRawQuery ( $ query , null , true , false , null , PDO :: FETCH_CLASS , ' stdClass ' )

如何使用日期值?

PdoOne允许5种类型的日期。

  • SQL格式是将日期存储到数据库中的格式。这取决于数据库的类型。例如,MySQL可以使用格式YMD。

  • 人类格式是最终用户看起来我们日期的格式。

  • ISO日期格式。这是如何运输和序列化值的格式。

  • 时间戳:它计算1-1-1970之后的秒数

  • 类 / PHP类:这是一个日期对象。

如何运行交易?

有3种运行交易的方法:

方法描述
startTransaction()它开始交易。根据类型数据库的不同,它可以堆叠。
犯罪()提交(并关闭)交易
回滚()回滚(并关闭)交易

例子:

PdoOne->startTransaction(); $result=$ PdoOne ->runRawQuery($sql,['Fanta'=>$productName],false); $ PdoOne ->commit(); // transaction ok } catch (Exception $e) { $ PdoOne ->rollback(false); // error, transaction cancelled, the false means that it doesn't throw an exception if we want rollback. }">
 try {
    $ sql = " insert into `product`(name) values(?) " ;
    $ PdoOne -> startTransaction ();
    $ result = $ PdoOne -> runRawQuery ( $ sql ,[ ' Fanta ' => $ productName ], false );
    $ PdoOne -> commit (); // transaction ok
} catch ( Exception $ e ) {
    $ PdoOne -> rollback ( false ); // error, transaction cancelled, the false means that it doesn't throw an exception if we want rollback.
}

自定义查询

tableexist($ tableName)

如果表格存在(当前数据库/架构),则返回true

StatValue($ tableName,$ columnname)

返回表的列的统计信息(作为数组)。

 $ stats = $ PdoOne -> statValue ( ' actor ' , ' actor_id ' );
最小最大限度avg数数
1 205 103.0000 21115 205

列Ttable($ tableName)

返回表的所有列

 $ result = $ PdoOne -> columnTable ( ' actor ' );
colname Coltype结肠化Colpres colscale ISKEY现有人士
actor_id小网5 0 1 1
Varchar 45 0 0
Varchar 45 0 0
last_update时间戳0 0

ExourneKeyTable($ tableName)

返回表的所有外键(源表)

createtable($ tableName,$ definity,$ priendarkey = null,$ extair ='',$ extairoutside ='')

使用定义和主键创建表。

  • $定义定义是一个关联数组,其名称为键,定义为值。
  • primarykey可能是字符串或关联数组。
    • 如果是字符串,则是主键的名称,示例“ user_id”;
    • 如果它是一个关联阵列,则可以用来定义主键,唯一,键和外键:
      • 'key_name'=>'主键'
      • 'key_name'=>'键'
      • 'key_name'=>'唯一键'
      • 'key_name'=>'外键参考tableerf(colref)...'
  • $ extra它在表的定义内定义了一个额外的定义。
  • Extraoutsed它定义了表格定义后的额外定义。

注意:您可以通过执行CLI(输出classcode)来生成代码使用现有表创建表
php PdoOne .php -database mysql -Server 127.0.0.1-用户根-PWD ABC.123 -DB Sakila -Input Film -Output Classcode

示例:( mysql)

"smallint unsigned not null auto_increment", "title" => "varchar(255) not null", "description" => "text", "release_year" => "year", "language_id" => "tinyint unsigned not null", "original_language_id" => "tinyint unsigned", "rental_duration" => "tinyint unsigned not null default '3'", "rental_rate" => "decimal(4,2) not null default '4.99'", "length" => "smallint unsigned", "replacement_cost" => "decimal(5,2) not null default '19.99'", "rating" => "enum('G','PG','PG-13','R','NC-17') default 'G'", "special_features" => "set('Trailers','Commentaries','Deleted Scenes','Behind the Scenes')", "last_update" => "timestamp not null default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP" ],[ "film_id" => "PRIMARY KEY", "title" => "KEY", "language_id" => "FOREIGN KEY REFERENCES`language`(`language_id`) ON UPDATE CASCADE", "original_language_id" => "FOREIGN KEY REFERENCES`language`(`language_id`) ON UPDATE CASCADE" ]); ">
 $ pdo -> createTable ( ' film ' ,                                                                                                
    [                                                                                                                    
        " film_id " => " smallint unsigned not null auto_increment " ,                                                        
        " title " => " varchar(255) not null " ,                                                                              
        " description " => " text " ,                                                                                         
        " release_year " => " year " ,                                                                                        
        " language_id " => " tinyint unsigned not null " ,                                                                    
        " original_language_id " => " tinyint unsigned " ,                                                                    
        " rental_duration " => " tinyint unsigned not null default '3' " ,                                                    
        " rental_rate " => " decimal(4,2) not null default '4.99' " ,                                                         
        " length " => " smallint unsigned " ,                                                                                 
        " replacement_cost " => " decimal(5,2) not null default '19.99' " ,                                                   
        " rating " => " enum('G','PG','PG-13','R','NC-17') default 'G' " ,                                                    
        " special_features " => " set('Trailers','Commentaries','Deleted Scenes','Behind the Scenes') " ,                     
        " last_update " => " timestamp not null default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP "                      
    ],[                                                                                                                  
        " film_id " => " PRIMARY KEY " ,                                                                                      
        " title " => " KEY " ,                                                                                                
        " language_id " => " FOREIGN KEY REFERENCES`language`(`language_id`) ON UPDATE CASCADE " ,                            
        " original_language_id " => " FOREIGN KEY REFERENCES`language`(`language_id`) ON UPDATE CASCADE "                    
    ]);                                                                                                                  
"smallint unsigned not null auto_increment", "title" => "varchar(255) not null", "description" => "text", "release_year" => "year", "language_id" => "tinyint unsigned not null", "original_language_id" => "tinyint unsigned", "rental_duration" => "tinyint unsigned not null default '3'", "rental_rate" => "decimal(4,2) not null default '4.99'", "length" => "smallint unsigned", "replacement_cost" => "decimal(5,2) not null default '19.99'", "rating" => "enum('G','PG','PG-13','R','NC-17') default 'G'", "special_features" => "set('Trailers','Commentaries','Deleted Scenes','Behind the Scenes')", "last_update" => "timestamp not null default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP" ],'film_id'); ">
 $ pdo -> createTable ( ' film ' ,                                                                                                
    [                                                                                                                    
        " film_id " => " smallint unsigned not null auto_increment " ,                                                        
        " title " => " varchar(255) not null " ,                                                                              
        " description " => " text " ,                                                                                         
        " release_year " => " year " ,                                                                                        
        " language_id " => " tinyint unsigned not null " ,                                                                    
        " original_language_id " => " tinyint unsigned " ,                                                                    
        " rental_duration " => " tinyint unsigned not null default '3' " ,                                                    
        " rental_rate " => " decimal(4,2) not null default '4.99' " ,                                                         
        " length " => " smallint unsigned " ,                                                                                 
        " replacement_cost " => " decimal(5,2) not null default '19.99' " ,                                                   
        " rating " => " enum('G','PG','PG-13','R','NC-17') default 'G' " ,                                                    
        " special_features " => " set('Trailers','Commentaries','Deleted Scenes','Behind the Scenes') " ,                     
        " last_update " => " timestamp not null default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP "                      
    ], ' film_id ' );                                                                                                                  

示例(SQLSRV)

"int NOT NULL IDENTITY(1,1)", "title" => "varchar(255) NOT NULL", "description" => "text(2147483647) DEFAULT (NULL)", "release_year" => "varchar(4)", "language_id" => "tinyint NOT NULL", "original_language_id" => "tinyint DEFAULT (NULL)", "rental_duration" => "tinyint NOT NULL DEFAULT ((3))", "rental_rate" => "decimal(4,2) NOT NULL DEFAULT ((4.99))", "length" => "smallint DEFAULT (NULL)", "replacement_cost" => "decimal(5,2) NOT NULL DEFAULT ((19.99))", "rating" => "varchar(10) DEFAULT ('G')", "special_features" => "varchar(255) DEFAULT (NULL)", "last_update" => "datetime NOT NULL DEFAULT (getdate())" ],[ "language_id" => "FOREIGN KEY REFERENCES language(language_id)", "original_language_id" => "FOREIGN KEY REFERENCES language(language_id)", "film_id" => "PRIMARY KEY" ]);">
 $ pdo -> createTable ( ' film ' ,
   [
       " film_id " => " int NOT NULL IDENTITY(1,1) " ,
       " title " => " varchar(255) NOT NULL " ,
       " description " => " text(2147483647) DEFAULT (NULL) " ,
       " release_year " => " varchar(4) " ,
       " language_id " => " tinyint NOT NULL " ,
       " original_language_id " => " tinyint DEFAULT (NULL) " ,
       " rental_duration " => " tinyint NOT NULL DEFAULT ((3)) " ,
       " rental_rate " => " decimal(4,2) NOT NULL DEFAULT ((4.99)) " ,
       " length " => " smallint DEFAULT (NULL) " ,
       " replacement_cost " => " decimal(5,2) NOT NULL DEFAULT ((19.99)) " ,
       " rating " => " varchar(10) DEFAULT ('G') " ,
       " special_features " => " varchar(255) DEFAULT (NULL) " ,
       " last_update " => " datetime NOT NULL DEFAULT (getdate()) "
   ],[
       " language_id " => " FOREIGN KEY REFERENCES language(language_id) " ,
       " original_language_id " => " FOREIGN KEY REFERENCES language(language_id) " ,
       " film_id " => " PRIMARY KEY "
   ]);

tablesorted($ maxloop = 5,$ returnproblems = false,$ debugtrace = false)

它返回按依赖项订购的表的列表(从无依赖到更依赖)

注意:此操作不是万无一失的,因为桌子可能具有圆形参考。

PdoOne('sqlsrv', "(local)sqlexpress", "sa", "abc.123", "sakila"); $dao->open(); echo "
";
var_dump($dao->tableSorted(3, false, true)); // it returns the tables sortered
var_dump($dao->tableSorted(3, true, true)); // it returns all the tables that can't be sortered
echo "
";">
 $ dao = new PdoOne ( ' sqlsrv ' , " (local)sqlexpress " , " sa " , " abc.123 " , " sakila " );
$ dao -> open ();
echo " 
 " ;
var_dump ( $ dao -> tableSorted ( 3 , false , true )); // it returns the tables sortered
var_dump ( $ dao -> tableSorted ( 3 , true , true )); // it returns all the tables that can't be sortered
echo " 
"
;

可验证的Eftable($ pdoinstance,$ tablename,$ deftable,$ deftablekey)

如果表与值相关的定义匹配,则验证表。

"int NOT NULL IDENTITY(1,1)", "title" => "varchar(255) NOT NULL", "description" => "text(2147483647) DEFAULT (NULL)", "release_year" => "varchar(4)", "language_id" => "tinyint NOT NULL", "original_language_id" => "tinyint DEFAULT (NULL)", "rental_duration" => "tinyint NOT NULL DEFAULT ((3))", "rental_rate" => "decimal(4,2) NOT NULL DEFAULT ((4.99))", "length" => "smallint DEFAULT (NULL)", "replacement_cost" => "decimal(5,2) NOT NULL DEFAULT ((19.99))", "rating" => "varchar(10) DEFAULT ('G')", "special_features" => "varchar(255) DEFAULT (NULL)", "last_update" => "datetime NOT NULL DEFAULT (getdate())" ]; $keys=[ "language_id" => "FOREIGN KEY REFERENCES language(language_id)", "original_language_id" => "FOREIGN KEY REFERENCES language(language_id)", "film_id" => "PRIMARY KEY" ]; var_dump(PdoOne::validateDefTable(self::get PdoOne (),self::TABLE,$def,$keys));">
 $def=[
       "film_id" => "int NOT NULL IDENTITY(1,1)",
       "title" => "varchar(255) NOT NULL",
       "description" => "text(2147483647) DEFAULT (NULL)",
       "release_year" => "varchar(4)",
       "language_id" => "tinyint NOT NULL",
       "original_language_id" => "tinyint DEFAULT (NULL)",
       "rental_duration" => "tinyint NOT NULL DEFAULT ((3))",
       "rental_rate" => "decimal(4,2) NOT NULL DEFAULT ((4.99))",
       "length" => "smallint DEFAULT (NULL)",
       "replacement_cost" => "decimal(5,2) NOT NULL DEFAULT ((19.99))",
       "rating" => "varchar(10) DEFAULT ('G')",
       "special_features" => "varchar(255) DEFAULT (NULL)",
       "last_update" => "datetime NOT NULL DEFAULT (getdate())"
   ];
$keys=[
       "language_id" => "FOREIGN KEY REFERENCES language(language_id)",
       "original_language_id" => "FOREIGN KEY REFERENCES language(language_id)",
       "film_id" => "PRIMARY KEY"
   ]; 
   
var_dump( PdoOne ::validateDefTable(self::get PdoOne (),self::TABLE,$def,$keys));

外键

它返回桌子的所有外键。

 $ result = $ PdoOne -> foreignKeyTable ( ' actor ' );
同盟国tablem Colrem
customer_id顾客customer_id
lental_id租金lental_id
Staff_ID职员Staff_ID

查询构建器(DQL)

您还可以构建程序查询。

例子:

PdoOne->select("*")->from("producttype") ->where('name=?', [ 'Cocacola']) ->where('idproducttype=?', [ 1]) ->toList(); ">
 $ results = $ PdoOne -> select ( " * " )-> from ( " producttype " )
    -> where ( ' name=? ' , [ ' Cocacola ' ])
    -> where ( ' idproducttype=? ' , [ 1 ])
    -> toList ();   

选择($列)

指示要返回的列。该参数是SQL命令,因此它允许数据库支持(包括功能,常数,操作员,别名等)的任何操作。

 $ results = $ PdoOne -> select ( " col1,col2 " ); //...

生成查询:选择COL1,COL2 ....

...">
 $ results = $ PdoOne -> select ( " select * from table " ); //->...

生成查询:从表中选择 * *

计数($ sql,$ arg ='*')

生成一个返回值计数的查询。这是方法选择()的宏

PdoOne->count('from table where condition=1'); // select count(*) from table where c.. $result = $ PdoOne ->count()->from('table')->where('condition=?',[1]); // select count(*) from table where c.. $result = $ PdoOne ->count('from table','col1'); // select count(col1) from table $result = $ PdoOne ->count()->from('table'); // select count(*) from table">
 $ result = $ PdoOne -> count ( ' from table where condition=1 ' ); // select count(*) from table where c..
$ result = $ PdoOne -> count ()-> from ( ' table ' )-> where ( ' condition=? ' ,[ 1 ]); // select count(*) from table where c..
$ result = $ PdoOne -> count ( ' from table ' , ' col1 ' ); // select count(col1) from table
$ result = $ PdoOne -> count ()-> from ( ' table ' ); // select count(*) from table

min($ sql,$ arg ='*')

生成一个查询,该查询返回列的最小值。如

下载源码

通过命令行克隆项目:

git clone https://github.com/EFTEC/PdoOne.git