php cli swoole mysql,swoole学习之异步Mysql

42d80ccae6e19189de5121d0eb33fbfa.png

官方示例:$db = new swoole_mysql();$server = array(

'host' => '127.0.0.1',

'port' => 3306,

'user' => 'test',

'password' => 'test',

'database' => 'test',

'charset' => 'utf8', //指定字符集

'timeout' => 2, // 可选:连接超时时间(非查询超时时间),默认为SW_MYSQL_CONNECT_TIMEOUT(1.0));$db->connect($server, function ($db, $result) {

if ($result === false) {

var_dump($db->connect_errno, $db->connect_error);

die;

}

$sql = 'show tables';

$db->query($sql, function(swoole_mysql $db, $result) {

if ($result === false)

{

var_dump($db->error, $db->errno);

}

elseif ($result === true )

{

var_dump($db->affected_rows, $db->insert_id);

}

var_dump($result);

$db->close();

});});

推荐(免费):swoole

常用函数:

connect($config, $callback) 连接数据库$config= array(

'host' => '127.0.0.1',

'port' => 3306,

'user' => 'test',

'password' => 'test',

'database' => 'test',

'charset' => 'utf8', //指定字符集

'timeout' => 2, // 可选:连接超时时间(非查询超时时间),默认为SW_MYSQL_CONNECT_TIMEOUT(1.0));host 主机ip地址

port端口号,默认3306

user用户名

password密码

database选择的数据库

charset设置客户端字符集

timeout 连接超时时间,默认1.0

$callback回调函数function($db, $result )$db swoole_mysql的对象

$result 返回值 , 为true的时候才能执行query , 为false的时候 , 可以通过$db->connect_errno 和$db->connect_error获取错误码和错误信息

query($sql, $callback) 执行sql语句$sql = "select * from test ";$db->query($sql,function($link,$result){});

$sql为要执行的SQL语句

$callback回调函数

每个MySQLi连接只能同时执行一条SQL,必须等待返回结果才能执行下一条SQL

回调函数function($link,$result)当SQL执行失败即$result == false的时候,通过$link->error可获得错误信息,$link->errno获得错误码

执行成功,$result == true ,通过$link->affected_rows获得受影响的行数 , $link->insert_id获得insert操作的自增ID

执行成功 且SQL为查询语句的时候, $result返回的是查询结果数组

close关闭连接$db->close();

将整个SQL连接关闭

on($event_name,$callback) 回调函数目前swoole_mysql只有一个onClose回调函数//mysql连接关闭时,自动触发$db->on('close',function($db){

echo "mysql connection is closed";});

swoole_mysql中的事物在官方文档中有详细介绍:

begin(function($db,$result))开启事物启动一个MySQL事务,事务启动成功会回调指定的函数

与commit和rollback结合实现MySQL事务处理

同一个MySQL连接对象,同一时间只能启动一个事务

必须等到上一个事务commit或rollback才能继续启动新事务

否则底层会抛出Swoole\MySQL\Exception异常,异常code为21

commit($callback)提交事物提交事务,当服务器返回响应时回调此函数

必须先调用begin启动事务才能调用commit否则底层会抛出Swoole\MySQL\Exception异常

异常code为22

rollback($callback)事物回滚必须先调用begin启动事务才能调用rollback否则底层会抛出Swoole\MySQL\Exception异常

异常code为22

官方示例:$db->begin(function( $db, $result) {

$db->query("update userinfo set level = 22 where id = 1", function($db, $result) {

$db->commit(function($db, $result) {

echo "commit ok\n";

});

});});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值