swoole_mysql->query

执行SQL查询。

function swoole_mysql->query($sql, callable $callback);
  • $sql为要执行的SQL语句
  • $callback执行成功后会回调此函数
  • 每个MySQLi连接只能同时执行一条SQL,必须等待返回结果后才能执行下一条SQL

回调函数

function onSQLReady(swoole_mysql $link, mixed $result);
  • 执行失败,$resultfalse,读取$link对象的error属性获得错误信息,errno属性获得错误码
  • 执行成功,SQL为非查询语句,$resulttrue,读取$link对象的affected_rows属性获得影响的行数,insert_id属性获得Insert操作的自增ID
  • 执行成功,SQL为查询语句,$result为结果数组

事务处理

Swoole\MySQL中执行下列SQL语句可以实现事务处理。

  • 启动事务:START TRANSACTION
  • 提交事务:COMMIT
  • 回滚事务:ROLLBACK

  • 潇洒

    $db = new swoole_mysql; $server = array( 'host' => 'localhost', 'user' => 'test', 'password' => 'test', 'database' => 'test', );

    $db->connect($server, function ($db, $r) { if ($r === false) { var_dump($db->connect_errno, $db->connect_error); die; } $sql = 'select * from test'; //$sql = 'show tables'; $db->query($sql, function(swoole_mysql $db, $r) { global $s; if ($r === false) { var_dump($db->error, $db->errno); } elseif ($r === true ) { var_dump($db->affected_rows, $db->insert_id); } var_dump($r); $db->close(); }); }); sql执行 $sql = 'show tables'; 没问题 执行查询就出错 $sql = 'select * from test'; 返回 Segmentation fault 这个什么情况?

  • 潇洒

    Program received signal SIGSEGV, Segmentation fault. mysql_decode_field (client=0x7ffff1886380) at /usr/local/src/swoole-src-2.0.2-alpha/swoole_mysql.h:419 419 col->db[size] = '\0'; Missing separate debuginfos, use: debuginfo-install cyrus-sasl-lib-2.1.23-13.el6.x86_64 freetype-2.3.11-17.el6.x86_64 glibc-2.12-1.149.el6_6.5.x86_64 keyutils-libs-1.4-5.el6.x86_64 krb5-libs-1.10.3-33.el6.x86_64 libcom_err-1.41.12-21.el6.x86_64 libcurl-7.19.7-52.el6.x86_64 libgcrypt-1.4.5-12.el6_8.x86_64 libgpg-error-1.7-4.el6.x86_64 libidn-1.18-2.el6.x86_64 libjpeg-turbo-1.2.1-3.el6_5.x86_64 libmcrypt-2.5.8-9.el6.x86_64 libpng-1.2.49-1.el6_2.x86_64 libselinux-2.0.94-5.8.el6.x86_64 libssh2-1.4.2-1.el6_6.1.x86_64 libxml2-2.7.6-21.el6_8.1.x86_64 libxslt-1.1.26-2.el6_3.1.x86_64 nspr-4.11.0-1.el6.x86_64 nss-3.21.3-2.el6_8.x86_64 nss-softokn-freebl-3.14.3-23.3.el6_8.x86_64 nss-util-3.21.3-1.el6_8.x86_64 openldap-2.4.23-26.el6.x86_64 openssl-1.0.1e-30.el6_6.5.x86_64 postgresql-libs-8.4.20-6.el6.x86_64 zlib-1.2.3-29.el6.x86_64 (gdb)

  • Ma.Alex

    这个数据读取有,数据大小限制吗?
    

  • 辣辣王者

    为什么没有支持参数绑定啊?

  • 马润

    这个query 一个mysql连接只能执行一次? 我在同一个connect 中调用两个query执行不同的SQL 会报错 Swoole\MySQL::query(): mysql client is waiting response, cannot send new sql query. in mysql.php MySQL客户端在等待响应,不能执行 一个新的query