salamander/mysql

Long-living MySQL connection for daemon.

2.2.1 2019-07-15 02:14 UTC

This package is not auto-updated.

Last update: 2024-04-14 03:41:18 UTC


README

Long-living MySQL connection for daemon.

Install

composer require salmander/mysql

Usage

$config = [
    // 主库
    'rwdb' => [
        'host' => "127.0.0.1",
        'user' => "root",
        'password' => "666666",
        'db' => "my_db",
        'port' => 3306,
        'charset' => "utf8",
    ],
    // 从库组
    'rodb' => [
        [
            'host' => "127.0.0.1",
            'user' => "root",
            'password' => "666666",
            'db' => "my_db",
            'port' => 3306,
            'charset' => "utf8",
        ]
    ]
]

$db = new Workerman\MySQL\Connection([
    'host'     => $config['rwdb']['host'],
    'port'     => $config['rwdb']['port'],
    'user'     => $config['rwdb']['user'],
    'password' => $config['rwdb']['password'],
    'dbname'   => $config['rwdb']['db'],
    'charset'   => $config['rwdb']['charset'],
]); // 读写主库
if($config["rodb"] && is_array($config["rodb"])) {
    $dbConn->setReadOnlyDBList($config["rodb"]);
}

// Get all rows.
$db1->select('ID,Sex')->from('Persons')->where('sex= :sex')->bindValues(array('sex'=>'M'))->query();
// Equivalent to.
$db1->select('ID,Sex')->from('Persons')->where("sex='F'")->query();
// Equivalent to.
$db->query("SELECT ID,Sex FROM `Persons` WHERE sex='M'");


// Get one row.
$db->select('ID,Sex')->from('Persons')->where('sex= :sex')->bindValues(array('sex'=>'M'))->row();
// Equivalent to.
$db->select('ID,Sex')->from('Persons')->where("sex= 'F' ")->row();
// Equivalent to.
$db->row("SELECT ID,Sex FROM `Persons` WHERE sex='M'");


// Get a column.
$db->select('ID')->from('Persons')->where('sex= :sex')->bindValues(array('sex'=>'M'))->column();
// Equivalent to.
$db->select('ID')->from('Persons')->where("sex= 'F' ")->column();
// Equivalent to.
$db->column("SELECT `ID` FROM `Persons` WHERE sex='M'");

// Get single.
$db->select('ID,Sex')->from('Persons')->where('sex= :sex')->bindValues(array('sex'=>'M'))->single();
// Equivalent to.
$db->select('ID,Sex')->from('Persons')->where("sex= 'F' ")->single();
// Equivalent to.
$db->single("SELECT ID,Sex FROM `Persons` WHERE sex='M'");

// Complex query.
$db->select('*')->from('table1')->innerJoin('table2','table1.uid = table2.uid')->where('age > :age')
->groupBy(array('aid'))->having('foo="foo"')->orderByASC/*orderByDESC*/(array('did'))
->limit(10)->offset(20)->bindValues(array('age' => 13));
// Equivalent to.
$db->query(SELECT * FROM `table1` INNER JOIN `table2` ON `table1`.`uid` = `table2`.`uid` WHERE age > 13
GROUP BY aid HAVING foo="foo" ORDER BY did LIMIT 10 OFFSET 20“);

// Insert.
$insert_id = $db->insert('Persons')->cols(array(
    'Firstname'=>'abc', 
    'Lastname'=>'efg', 
    'Sex'=>'M', 
    'Age'=>13))->query();
// Equivalent to.
$insert_id = $db->query("INSERT INTO `Persons` ( `Firstname`,`Lastname`,`Sex`,`Age`) 
VALUES ( 'abc', 'efg', 'M', 13)");

// Updagte.
$row_count = $db->update('Persons')->cols(array('sex'))->where('ID=1')
->bindValue('sex', 'F')->query();
// Equivalent to.
$row_count = $db->update('Persons')->cols(array('sex'=>'F'))->where('ID=1')->query();
// Equivalent to.
$row_count = $db->query("UPDATE `Persons` SET `sex` = 'F' WHERE ID=1");

// Delete.
$row_count = $db->delete('Persons')->where('ID=9')->query();
// Equivalent to.
$row_count = $db->query("DELETE FROM `Persons` WHERE ID=9");

// Transaction.
$db1->beginTrans();
....
$db1->commitTrans(); // or $db1->rollBackTrans();