swoole学习之向mysql服务器发送sql预处理请求
prepare()
向 MySQL 服务器发送 SQL 预处理请求
prepare 必须与 execute 配合使用。预处理请求成功后,调用 execute 方法向 MySQL 服务器发送数据参数。
语法
Swoole\Coroutine\MySQL->prepare(string $sql, float $timeout): Swoole\Coroutine\MySQL\Statement|false;
参数
string $sql
功能:预处理语句【使用 ? 作为参数占位符】
默认值:无
其它值:无
float $timeout
功能:超时时间
值单位:秒,最小精度为毫秒(0.001 秒)
默认值:0
其它值:无
参考客户端超时规则
返回值
失败返回 false,可检查 $db->error 和 $db->errno 判断错误原因
成功返回 Coroutine\MySQL\Statement 对象,可调用对象的 execute 方法发送参数
示例
<?php
class MysqlService
{
//定义一个变量
public $dbSource = '';
public $dbConfig = '';
//定义构造函数
public function __construct()
{
Co\run(function () {
//实例化mysql服务
$this->dbSource = new Swoole\Coroutine\MySQL();
//配置mysql参数
$this->dbConfig = array(
'host' => '127.0.0.1',
'port' => '3306',
'user' => 'root',
'password' => '123456',
'database' => 'qipa250',
'charset' => 'utf8',
);
});
}
//预处理
public function prepareaction($id)
{
Co\run(function () use ($id) {
echo $sql = ' select * from qipa_member where id = ?';
echo PHP_EOL;
$this->dbSource->connect($this->dbConfig);
$res = $this->dbSource->prepare($sql);
var_dump($res);
if ($res == false) {
//打印报错原因
var_dump($this->dbSource->errno, $this->dbSource->error);
return;
} else {
$ret2 = $res->execute(array($id));
echo "<pre>";
print_r($ret2);
}
});
}
}
//实例化类
$mysql = new MysqlService();
//预处理
$id = 1;
$mysql->prepareaction($id);