<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # mysql client Swoole在1.8.6版本提供了全新的異步MySQL客戶端,底層自行實現了MySQL的通信協議,無需依賴其他第三方庫,如libmysqlclient、mysqlnd、mysqli等。 [TOC=2,3] ## **swoole_mysql->construct** 創建異步mysql客戶端。 ## **swoole_mysql->on** 設置事件回調函數。目前僅支持onClose事件回調。 ~~~ function swoole_mysql->on($event_name, callable $callback); ~~~ **onClose事件** 當連接關閉時回調此函數。 ~~~ $db->on('Close', function($db){ echo "MySQL connection is closed.\n"; }); ~~~ ## **swoole_mysql->connect** 異步連接到MySQL服務器。 ~~~ function swoole_mysql->connect(array $serverConfig, callable $callback); ~~~ $serverConfig為MySQL服務器的配置,必須為關聯索引數組 $callback連接完成后回調此函數 服務器配置 ~~~ $server = array( 'host' => '192.168.56.102', 'user' => 'test', 'password' => 'test', 'database' => 'test', 'charset' => 'utf8', ); ~~~ * host MySQL服務器的主機地址,支持IPv6(::1)和UnixSocket(unix:/tmp/mysql.sock) * port MySQL服務器監聽的端口,選填,默認為3306 * user 用戶名,必填 * password 密碼,必填 * database 連接的數據庫,必填 * charset 設置客戶端字符集,選填,默認使用Server返回的字符集。如果字符串不存在,底層會拋出Swoole\MySQL\Exception異常 **回調函數** ~~~ function onConnect(swoole_mysql $db, bool $result); ~~~ * $db 為swoole_mysql對象 * $result 連接是否成功,只有為true時才可以執行query查詢 * $result 為false,可以通過connect_errno和connect_error得到失敗的錯誤碼和錯誤信息 ## **swoole_mysql->escape** 轉義SQL語句中的特殊字符,避免SQL注入攻擊。底層基于mysqlnd提供的函數實現,`需要依賴PHP的mysqlnd擴展`。 * 編譯時需要增加--enable-mysqlnd來啟用,如果你的PHP中沒有mysqlnd將會出現編譯錯誤 * 必須在connect完成后才能使用 * 客戶端未設置字符集時默認使用Server返回的字符集設置,可在connect方法中加入charset修改連接字符集 >此方法在1.9.6或更高版本可用 ~~~ function swoole_mysql->escape(string $str) : string ~~~ **使用實例** ~~~ $db = new swoole_mysql; $server = array( 'host' => '127.0.0.1', 'user' => 'root', 'password' => 'root', 'database' => 'test', ); $db->connect($server, function ($db, $result) { $data = $db->escape("abc'efg\r\n"); }); ~~~ ## **swoole_mysql->query** 執行SQL查詢。 ~~~ function swoole_mysql->query($sql, callable $callback); ~~~ * $sql為要執行的SQL語句 * $callback執行成功后會回調此函數 * 每個MySQLi連接只能同時執行一條SQL,必須等待返回結果后才能執行下一條SQL **回調函數** ~~~ function onSQLReady(swoole_mysql $link, mixed $result); ~~~ * 執行失敗,$result為false,讀取$link對象的error屬性獲得錯誤信息,errno屬性獲得錯誤碼 * 執行成功,SQL為非查詢語句,$result為true,讀取$link對象的affected_rows屬性獲得影響的行數,insert_id屬性獲得Insert操作的自增ID * 執行成功,SQL為查詢語句,$result為結果數組 **事務處理** 在Swoole\MySQL中執行下列SQL語句可以實現事務處理。 * 啟動事務:START TRANSACTION * 提交事務:COMMIT * 回滾事務:ROLLBACK ## **swoole_mysql->begin** 啟動事務。函數原型: ~~~ function swoole_mysql->begin(callable $callback); ~~~ 啟動一個MySQL事務,事務啟動成功會回調指定的函數 與commit和rollback結合實現MySQL事務處理 * 同一個MySQL連接對象,同一時間只能啟動一個事務 * 必須等到上一個事務commit或rollback才能繼續啟動新事務 * 否則底層會拋出Swoole\MySQL\Exception異常,異常code為21 >事務處理在1.9.15或更高版本可用 **使用實例** ~~~ $db->begin(function( $db, $result) { $db->query("update userinfo set level = 22 where id = 1", function($db, $result) { $db->rollback(function($db, $result) { echo "commit ok\n"; }); }); }); ~~~ ## **swoole_mysql->commit** 提交事務。 ~~~ function swoole_mysql->commit(callable $callback); ~~~ * 提交事務,當服務器返回響應時回調此函數 * 必須先調用begin啟動事務才能調用commit否則底層會拋出Swoole\MySQL\Exception異常 * 異常code為22 >在1.9.15或更高版本可用 **使用實例** ``` $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->rollback** 回滾事務。 ~~~ function swoole_mysql->rollback(callable $callback); ~~~ * 必須先調用begin啟動事務才能調用rollback否則底層會拋出Swoole\MySQL\Exception異常 * 異常code為22 ## **swoole_mysql->close** 關閉MySQL連接。 ~~~ function swoole_mysql->close(); ~~~ **異步mysql客戶端** ```php global $mysql; $mysql = new Mysql; $server = array( 'host' => '192.168.56.102', 'port' => 3306, 'user' => 'test', 'password' => 'test', 'database' => 'test', 'charset' => 'utf8', //指定字符集 'timeout' => 2, // 可選:連接超時時間(非查詢超時時間),默認為SW_MYSQL_CONNECT_TIMEOUT(1.0) ); $mysql->connect($server, function (Mysql $db, $r) { if ($r === false) { var_dump($db->connect_errno, $db->connect_error); die; } }); $sql = 'show tables'; $mysql->query($sql, function (Mysql $db, $r) { if ($r === false) { var_dump($db->error, $db->errno); } elseif ($r === true) { var_dump($db->affected_rows, $db->insert_id); } var_dump($r); });
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看