DaoOne . Ini pembungkus sederhana untuk Mysqli
Perpustakaan ini secepat mungkin. Sebagian besar operasinya adalah manajemen string/array sederhana.
Catatan: Rilis ini dipindahkan ke https://github.com/EFTEC/PdoOne
PdoOne melakukan pekerjaan yang sama tetapi bekerja dengan perpustakaan PDO (bukan MySQLi). Saat ini PdoOne bekerja dengan Mysqli dan SqlSrv tetapi memiliki banyak fitur lain yang tidak akan ada di DaoOne
Instal melalui komposer
komposer memerlukan eftec/pdoone
Perpustakaan ini dapat bekerja bersama-sama dengan eftec/ DaoOne .
Ubah kelasnya, daripada menggunakan eftec/ DaoOne -> eftec/pdoone
Contoh:
Sebelum:
/** @var eftec DaoOne $db */
$ db = null ;
Setelah:
/** @var eftecPdoOne $db */
$ db = null ;
Sebelum:
$ db = new DaoOne ( ' 127.0.0.1 ' , ' root ' , ' abc.123 ' , ' sakila ' );
Setelah:
$ db = new DaoOne ( ' mysql ' , ' 127.0.0.1 ' , ' root ' , ' abc.123 ' , ' sakila ' ); // check 'mysql'
Jika kita menggunakan DaoOne ::runGen(false), maka kita harus memeriksa hasilnya. runGen ( DaoOne ) mengembalikan objek mysqli_result. runGen (PdoOne) mengembalikan objek pernyataan pdo.
Sebelum:
$ result = $ db -> runGen ( false ); // it returns a mysqli_result
$ result -> fetch_assoc ();
$ result -> free_result ();
Setelah:
$ result = $ db -> runGen ( false ); // it returns a pdostatement
$ result -> fetch ( PDO :: FETCH_ASSOC );
$ result = null ;
Balikkan ini
$stmt->bind_param("s", $_POST['name']);
$stmt->execute();
$result = $stmt->get_result();
if($result->num_rows === 0) exit('No rows');
while($row = $result->fetch_assoc()) {
$ids[] = $row['id'];
$names[] = $row['name'];
$ages[] = $row['age'];
}
var_export($ages);
$stmt->close();
ke dalam ini
$products=$dao
->select("*")
->from("myTable")
->where("name = ?",[$_POST['name']])
->toList();
Tambahkan ke composer.json persyaratan berikutnya, lalu perbarui composer.
{
"require" : {
"eftec/ DaoOne " : " ^3.15 "
}
}
atau menginstalnya melalui cli menggunakan
komposer membutuhkan eftec/ DaoOne
Download saja file lib/ DaoOne .php dan simpan dalam satu folder.
$ dao = new DaoOne ( " 127.0.0.1 " , " root " , " abc.123 " , " sakila " , "" );
$ dao -> connect ();
Di mana
$ sql = " CREATE TABLE `product` (
`idproduct` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NULL,
PRIMARY KEY (`idproduct`)); " ;
$ dao -> runRawQuery ( $ sql );
$ sql = " insert into `product`(name) values(?) " ;
$ stmt = $ dao -> prepare ( $ sql );
$ productName = " Cocacola " ;
$ stmt -> bind_param ( " s " , $ productName ); // s stand for string. Also i =integer, d = double and b=blob
$ dao -> runQuery ( $ stmt );
catatan: Anda juga bisa memasukkan menggunakan rantai prosedural insert($table,$schema,[$values])
$ dao -> runRawQuery ( ' insert into `product` (name) values(?) '
, array ( ' s ' , ' cocacola ' ));
Ini mengembalikan pernyataan mysqli_.
$ sql = " select * from `product` order by name " ;
$ stmt = $ dao -> prepare ( $ sql );
$ dao -> runQuery ( $ stmt );
$ rows = $ stmt -> get_result ();
while ( $ row = $ rows -> fetch_assoc ()) {
var_dump ( $ row );
}
Pernyataan ini harus diproses secara manual.
Ini mengembalikan array asosiatif.
$ sql = " select * from `product` order by name " ;
$ stmt = $ dao -> prepare ( $ sql );
$ dao -> runQuery ( $ stmt );
$ rows = $ stmt -> get_result ();
$ allRows = $ rows -> fetch_all ( MYSQLI_ASSOC );
var_dump ( $ allRows );
try {
$ sql = " insert into `product`(name) values(?) " ;
$ dao -> startTransaction ();
$ stmt = $ dao -> prepare ( $ sql );
$ productName = " Fanta " ;
$ stmt -> bind_param ( " s " , $ productName );
$ dao -> runQuery ( $ stmt );
$ dao -> commit (); // transaction ok
} catch ( Exception $ e ) {
$ dao -> rollback ( false ); // error, transaction cancelled.
}
Ini memulai transaksi
Ini melakukan transaksi.
Ini mengembalikan transaksi.
Jika benar (default), maka akan muncul kesalahan jika terjadi kesalahan. Jika salah, maka eksekusi dilanjutkan
Benar jika database terhubung, sebaliknya salah.
Anda juga dapat membuat kueri prosedural.
Contoh:
$ results = $ dao -> select ( " * " )-> from ( " producttype " )
-> where ( ' name=? ' , [ ' s ' , ' Cocacola ' ])
-> where ( ' idproducttype=? ' , [ ' i ' , 1 ])
-> toList ();
Menghasilkan perintah pilih.
$ results = $ dao -> select ( " col1,col2 " )->. . .
Menghasilkan kueri: pilih col1,col2 ....
$ results = $ dao -> select ( " select * from table " )->. . .
Menghasilkan kueri: pilih * dari tabel ....
Menghasilkan perintah pilih.
$ results = $ dao -> select ( " col1,col2 " )-> distinct (). . .
Menghasilkan kueri: pilih col1 ,col2 ....
Catatan: ->distinct('unique') mengembalikan pilih unik ..
Menghasilkan perintah dari.
$ results = $ dao -> select ( " * " )-> from ( ' table ' ). . .
Menghasilkan kueri: pilih * dari tabel
$tables bisa berupa tabel tunggal atau konstruksi sql. Misalnya, perintah selanjutnya valid:
$ results = $ dao -> select ( " * " )-> from ( ' table t1 inner join t2 on t1.c1=t2.c2 ' ). . .
Menghasilkan perintah di mana.
$ results = $ dao -> select ( " * " )
-> from ( ' table ' )
-> where ( ' p1=1 ' ). . .
Menghasilkan kueri: pilih * dari tabel di mana p1=1
Catatan: ArrayParameters adalah array sebagai berikut: tipe, nilai.
Dimana tipenya adalah i=integer, d=double, s=string atau b=blob. Jika ragu, gunakan "s"
Contoh arrayParameter:
['i',1 ,'s','halo' ,'d',20.3 ,'s','dunia']
$ results = $ dao -> select ( " * " )
-> from ( ' table ' )
-> where ( ' p1=? ' ,[ ' i ' , 1 ]). . .
Menghasilkan kueri: pilih * dari tabel di mana p1=?(1)
$ results = $ dao -> select ( " * " )
-> from ( ' table ' )
-> where ( ' p1=? and p2=? ' ,[ ' i ' , 1 , ' s ' , ' hello ' ]). . .
Menghasilkan kueri: pilih * dari tabel di mana p1=?(1) dan p2=?('hello')
Catatan. di mana bisa disarangkan.
$ results = $ dao -> select ( " * " )
-> from ( ' table ' )
-> where ( ' p1=? ' ,[ ' i ' , 1 ])
-> where ( ' p2=? ' ,[ ' s ' , ' hello ' ]). . .
Menghasilkan kueri: pilih * dari tabel di mana p1=?(1) dan p2=?('hello')
Anda juga bisa menggunakan:
$ results = $ dao -> select ( " * " )-> from ( " table " )
-> where ([ ' p1 ' => ' Coca-Cola ' , ' p2 ' => 1 ])
-> toList ();
Menghasilkan kueri: pilih * dari tabel di mana p1=?(Coca-Cola) dan p2=?(1)
Menghasilkan perintah pesanan.
$ results = $ dao -> select ( " * " )
-> from ( ' table ' )
-> order ( ' p1 desc ' ). . .
Menghasilkan kueri: pilih * dari urutan tabel berdasarkan p1 desc
Menghasilkan perintah grup.
$ results = $ dao -> select ( " * " )
-> from ( ' table ' )
-> group ( ' p1 ' ). . .
Menghasilkan kueri: pilih * dari grup tabel berdasarkan p1
Menghasilkan perintah grup.
$ results = $ dao -> select ( " * " )
-> from ( ' table ' )
-> group ( ' p1 ' )
-> having ( ' p1>? ' , array ( ' i ' , 1 )). . .
Menghasilkan kueri: pilih * dari grup tabel dengan p1 memiliki p1>?(1)
Catatan: Memiliki dapat disarangkan has()->having()
Catatan: Memiliki bisa tanpa parameter has('col>10')
Jalankan pembuatan kueri.
Perhatikan jika returnArray benar maka ia mengembalikan array asosiatif. jika returnArray salah maka ia mengembalikan mysqli_result
Catatan: Ini mengatur ulang parameter saat ini (seperti pilihan saat ini, dari, di mana, dll.)
Ini adalah makro runGen. Ia mengembalikan array asosiatif atau null.
$ results = $ dao -> select ( " * " )
-> from ( ' table ' )
-> toList ()
Ini adalah makro runGen. Ini mengembalikan mysqli_result atau null.
$ results = $ dao -> select ( " * " )
-> from ( ' table ' )
-> toResult ()
Ini adalah makro runGen. Ia mengembalikan baris pertama (jika ada, jika tidak, ia mengembalikan false) sebagai array asosiatif.
$ results = $ dao -> select ( " * " )
-> from ( ' table ' )
-> first ()
Ini adalah makro runGen. Ia mengembalikan baris terakhir (jika ada, jika tidak, ia mengembalikan false) sebagai array asosiatif.
$ results = $ dao -> select ( " * " )
-> from ( ' table ' )
-> last ()
Terkadang lebih efisien menjalankan order() dan first() karena last() membaca semua nilai.
Ini mengembalikan perintah sql.
$ sql = $ dao -> select ( " * " )
-> from ( ' table ' )
-> sqlGen ();
echo $ sql ; // returns select * from table
$ results = $ dao -> toList (); // executes the query
Catatan: ini tidak menyetel ulang kueri.
Ada empat cara untuk menjalankan setiap perintah.
Katakanlah kita ingin menambahkan bilangan bulat pada kolom col1 dengan nilai 20
Skema dan nilai menggunakan daftar nilai : Dimana nilai pertama adalah kolom, yang kedua adalah jenis nilai (i=integer,d=double,s=string,b=blob) dan array kedua berisi nilai.
$ dao -> insert ( " table "
,[ ' col1 ' , ' i ' ]
,[ 20 ]);
Skema dan nilai dalam daftar yang sama : Dimana nilai pertama adalah kolom, yang kedua adalah jenis nilai (i=integer,d=double,s=string,b=blob) dan yang ketiga adalah nilainya.
$ dao -> insert ( " table "
,[ ' col1 ' , ' i ' , 20 ]);
Skema dan nilai menggunakan dua array asosiatif :
$ dao -> insert ( " table "
,[ ' col1 ' => ' i ' ]
,[ ' col1 ' => 20 ]);
Skema dan nilai menggunakan array asosiatif tunggal : Tipe dihitung secara otomatis.
$ dao -> insert ( " table "
,[ ' col1 ' => 20 ]);
Menghasilkan perintah sisipkan.
$ dao -> insert ( " producttype "
,[ ' idproducttype ' , ' i ' , ' name ' , ' s ' , ' type ' , ' i ' ]
,[ 1 , ' cocacola ' , 1 ]);
Menggunakan rantai bersarang (array tunggal)
$ dao -> from ( " producttype " )
-> set ([ ' idproducttype ' , ' i ' , 0 , ' name ' , ' s ' , ' Pepsi ' , ' type ' , ' i ' , 1 ])
-> insert ();
Menggunakan beberapa set rantai bersarang
$ dao -> from ( " producttype " )
-> set ( " idproducttype=? " ,[ ' i ' , 101 ])
-> set ( ' name=? ' ,[ ' s ' , ' Pepsi ' ])
-> set ( ' type=? ' ,[ ' i ' , 1 ])
-> insert ();
atau (tipe ditentukan, jika memungkinkan, secara otomatis oleh MySql)
$ dao -> from ( " producttype " )
-> set ( " idproducttype=? " ,[ ' i ' , 101 ])
-> set ( ' name=? ' , ' Pepsi ' )
-> set ( ' type=? ' , 1 )
-> insert ();
Menggunakan himpunan deklaratif rantai bersarang
$ dao -> from ( " producttype " )
-> set ( ' (idproducttype,name,type) values (?,?,?) ' ,[ ' i ' , 100 , ' s ' , ' Pepsi ' , ' i ' , 1 ])
-> insert ();
Menghasilkan kueri: masukkan ke producttype(idproducttype,name,type) value(?,?,?) ....
Menghasilkan perintah sisipkan.
$ dao -> update ( " producttype "
,[ ' name ' , ' s ' , ' type ' , ' i ' ] //set
,[ 6 , ' Captain-Crunch ' , 2 ] //set
,[ ' idproducttype ' , ' i ' ] // where
,[ 6 ]); // where
$ dao -> update ( " producttype "
,[ ' name ' => ' Captain-Crunch ' , ' type ' => 2 ] // set
,[ ' idproducttype ' => 6 ]); // where
$ dao -> from ( " producttype " )
-> set ( " name=? " ,[ ' s ' , ' Captain-Crunch ' ]) //set
-> set ( " type=? " ,[ ' i ' , 6 ]) //set
-> where ( ' idproducttype=? ' ,[ ' i ' , 6 ]) // where
-> update (); // update
atau
$ dao -> from ( " producttype " )
-> set ( " name=? " , ' Captain-Crunch ' ) //set
-> set ( " type=? " , 6 ) //set
-> where ( ' idproducttype=? ' ,[ ' i ' , 6 ]) // where
-> update (); // update
Menghasilkan kueri: perbarui
name
set tipe produk =?,type
=? dimanaidproducttype
=? ....
Menghasilkan perintah hapus.
$ dao -> delete ( " producttype "
,[ ' idproducttype ' , ' i ' ] // where
,[ 7 ]); // where
$ dao -> delete ( " producttype "
,[ ' idproducttype ' => 7 ]); // where
Menghasilkan kueri: hapus dari producttype di mana
idproducttype
=? ....
Anda juga dapat menghapus melalui rantai pembuat DQL.
$ dao -> from ( " producttype " )
-> where ( ' idproducttype=? ' ,[ ' i ' , 7 ]) // where
-> delete ();
$ dao -> from ( " producttype " )
-> where ([ ' idproducttype ' => 7 ]) // where
-> delete ();
Menghasilkan kueri: hapus dari producttype di mana
idproducttype
=? ....
Urutan adalah alternatif dari bidang AUTO_NUMERIC. Ia menggunakan tabel untuk menghasilkan ID unik.
Urutan yang digunakan didasarkan pada Snowflake Twitter dan dihasilkan berdasarkan waktu (dengan mikrodetik), Id Node, dan urutan. Ini menghasilkan nilai PANJANG (int 64) yang unik
$dao->nodeId=1; // optional
$dao->tableSequence='snowflake'; // optional
$dao->createSequence(); // it creates a table called snowflake and a function called next_snowflake()
$dao->getSequence() // string(19) "3639032938181434317"
$dao->getSequence(true) // returns a sequence by flipping some values.
$dao->getSequencePHP([unpredictable=false]) Mengembalikan urutan tanpa menggunakan tabel. Urutan ini lebih efisien daripada $dao->getSequence tetapi menggunakan nilai acak untuk menangani tabrakan.
Jika upredictable benar maka ia mengembalikan angka yang tidak dapat diprediksi (membalik beberapa digit)
$dao->getSequencePHP() // string(19) "3639032938181434317"
$dao->getSequencePHP(true) // string(19) "1739032938181434311"