Asynchronous & non-blocking MySQLi driver for ReactPHP.
Require php-mysqlnd extension
composer require shuchkin/react-mysqli
$loop = \React\EventLoop\Factory::create();
$db = \Shuchkin\ReactMySQLi\Client::connect($loop, 'localhost', 'root', '', 'my_db' );
$db->query('SELECT id,name,email FROM user')->then(
function (\Shuchkin\ReactMySQLi\Result $result) {
print_r( $result->all() );
},
function ( \Exception $ex ) {
trigger_error( $ex->getMessage() );
}
);
$loop->run();
Array
(
[0] => stdClass Object
(
[id] => 1
[name] => Gianni Rodari
[email] => gianni.rodari@example.com
)
[1] => stdClass Object
(
[id] => 2
[name] => Rikki-Tikki-Tavi
[email] => mangoose@example.com
)
)
$db->query("INSERT INTO user SET name='Sergey',email='sergey.shuchkin@gmail.com'")->then(
function (\Shuchkin\ReactMySQLi\Result $result) {
print_r($result->insert_id); // 12345
},
function ( \Exception $ex ) {
trigger_error( $ex->getMessage() );
}
);
$db->query("UPDATE user SET email='sergey@example.com' WHERE id=12345")->then(
function (\Shuchkin\ReactMySQLi\Result $result) {
print_r($result->affected_rows);
},
function ( \Exception $ex ) {
trigger_error( $ex->getMessage() );
}
);
$db->query('DELETE FROM user WHERE id=12345')->then(
function (\Shuchkin\ReactMySQLi\Result $result) {
print_r($result->affected_rows);
},
function ( \Exception $ex ) {
trigger_error( $ex->getMessage() );
}
);