官方範例:
$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
連接埠號碼,預設3306user
使用者名稱#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)
$result == false
的時候,透過$link->error
可獲得錯誤訊息,$link->errno
獲得錯誤碼$result = = true
,透過$link->affected_rows
獲得受影響的行數, $link->insert_id
獲得insert
操作的自增ID$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
連接對象,同一時間只能啟動一個交易commi
t或rollback
才能繼續啟動新交易Swoole\MySQL\Exception
異常,異常code
為21
提交事物
異常
為
22
事物回滾
異常
為
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"; }); });});
#
以上是swoole學習之異步Mysql的詳細內容。更多資訊請關注PHP中文網其他相關文章!