官方示例:
$db = new swoole_mysql();$server = array( 'host' => '127.0.0.1', 'port' => 3306, 'user' => 'test', 'password' => 'test', 'database' => 'test', 'charset' => 'utf8', //指定字符集 'timeout' => 2, // 可選:連接超時(shí)時(shí)間(非查詢超時(shí)時(shí)間),默認(rèn)為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(); });});
推薦(免費(fèi)):swoole
常用函數(shù):
connect($config, $callback) 連接數(shù)據(jù)庫
$config= array( 'host' => '127.0.0.1', 'port' => 3306, 'user' => 'test', 'password' => 'test', 'database' => 'test', 'charset' => 'utf8', //指定字符集 'timeout' => 2, // 可選:連接超時(shí)時(shí)間(非查詢超時(shí)時(shí)間),默認(rèn)為SW_MYSQL_CONNECT_TIMEOUT(1.0));
- host 主機(jī)ip地址
- port端口號,默認(rèn)3306
- user用戶名
- password密碼
- database選擇的數(shù)據(jù)庫
- charset設(shè)置客戶端字符集
- timeout 連接超時(shí)時(shí)間,默認(rèn)1.0
$callback回調(diào)函數(shù)function($db, $result )
- $db swoole_mysql的對象
- $result 返回值 , 為true的時(shí)候才能執(zhí)行query , 為false的時(shí)候 , 可以通過$db->connect_errno 和$db->connect_error獲取錯誤碼和錯誤信息
query($sql, $callback) 執(zhí)行sql語句
$sql = "select * from test ";$db->query($sql,function($link,$result){});
$sql為要執(zhí)行的SQL語句
$callback回調(diào)函數(shù)
每個(gè)mysqli連接只能同時(shí)執(zhí)行一條SQL,必須等待返回結(jié)果才能執(zhí)行下一條SQL
回調(diào)函數(shù)function($link,$result)
- 當(dāng)SQL執(zhí)行失敗即$result == false的時(shí)候,通過$link->error可獲得錯誤信息,$link->errno獲得錯誤碼
- 執(zhí)行成功,$result == true ,通過$link->affected_rows獲得受影響的行數(shù) , $link->insert_id獲得insert操作的自增ID
- 執(zhí)行成功 且SQL為查詢語句的時(shí)候, $result返回的是查詢結(jié)果數(shù)組
close關(guān)閉連接
$db->close();
將整個(gè)SQL連接關(guān)閉
on($event_name,$callback) 回調(diào)函數(shù)
目前swoole_mysql只有一個(gè)onClose回調(diào)函數(shù)
//mysql連接關(guān)閉時(shí),自動觸發(fā)$db->on('close',function($db){ echo "mysql connection is closed";});
swoole_mysql中的事物
在官方文檔中有詳細(xì)介紹:
begin(function($db,$result))開啟事物
- 啟動一個(gè)MySQL事務(wù),事務(wù)啟動成功會回調(diào)指定的函數(shù)
- 與commit和rollback結(jié)合實(shí)現(xiàn)MySQL事務(wù)處理
- 同一個(gè)MySQL連接對象,同一時(shí)間只能啟動一個(gè)事務(wù)
- 必須等到上一個(gè)事務(wù)commit或rollback才能繼續(xù)啟動新事務(wù)
- 否則底層會拋出SwooleMySQLException異常,異常code為21
commit($callback)提交事物
- 提交事務(wù),當(dāng)服務(wù)器返回響應(yīng)時(shí)回調(diào)此函數(shù)
- 必須先調(diào)用begin啟動事務(wù)才能調(diào)用commit否則底層會拋出SwooleMySQLException異常
- 異常code為22
rollback($callback)事物回滾
- 必須先調(diào)用begin啟動事務(wù)才能調(diào)用rollback否則底層會拋出SwooleMySQLException異常
- 異常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 okn"; }); });});
? ? ? ? ? ? ? ?
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載。
THE END
喜歡就支持一下吧
相關(guān)推薦