Coroutine\MySQL\Statement->execute
最后更新于:2022-04-02 06:29:01
# Coroutine\\MySQL\\Statement->execute
[TOC]
向`MySQL`服务器发送`SQL`预处理数据参数。`execute`必须与`prepare`配合使用,调用`execute`之前必须先调用`prepare`发起预处理请求。
`execute`方法可以重复调用。
~~~
function Coroutine\MySQL\Statement->execute(array $params, float $timeout = -1) : bool
~~~
> 需要`2.0.11`或更高版本
## 参数
* `$params`预处理数据参数,必须与`prepare`语句的参数个数相同。`$params`必须为数字索引的数组,参数的顺序与`prepare`语句相同
* `$timeout`超时时间,在规定的时间内`MySQL`服务器未能返回数据,底层将返回`false`,设置错误码为`110`,并切断连接
## 返回值
* 成功时返回`ture`,如果设置`connect`的`fetch_mode`参数为`true`时,(需要 4.0 或更高版本)
* 成功时返回`array`数据集数组,如不是上述情况时,
* 失败返回`false`,可检查`$db->error`和`$db->errno`判断错误原因
## 示例
~~~
use Swoole\Coroutine as co;
co::create(function() {
$db = new co\MySQL();
$server = array(
'host' => '127.0.0.1',
'user' => 'root',
'password' => 'root',
'database' => 'test',
);
$ret1 = $db->connect($server);
$stmt = $db->prepare('SELECT * FROM userinfo WHERE id=? and name=?');
if ($stmt == false)
{
var_dump($db->errno, $db->error);
}
else
{
$ret2 = $stmt->execute(array(10, 'rango'));
var_dump($ret2);
$ret3 = $stmt->execute(array(13, 'alvin'));
var_dump($ret3);
}
});
~~~
';