第一步:配置
<?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',
);
});
}
}
//实例化类
$mysql = new MysqlService();
第二步:查询
//查询方法
public function select($id)
{
// 连接
go(function () use ($id) {
$stmt = $this->dbSource->prepare('select * from qipa_member where id =?');
echo "<pre>";
print_r($stmt);
if ($stmt == false) {
var_dump($this->dbSource->errno, $this->dbSource->error);
} else {
$ret2 = $stmt->execute(array($id));
echo "<pre>";
print_r($ret2);
}
// 关闭连接
$this->dbSource->close();
});
}
在类实例化后调用select方法
$id = 1;
$mysql->select($id);
数据库中的数据
执行
php mysqlService.php
第三步:增加
//增加
public function add($params)
{
Co\run(function () use ($params) {
echo "<pre>";
print_r($params);
$now = date('Y-m-d H:i:s', time());
echo $sql = 'insert into qipa_member value(null,"' . $params['member_name'] . '","' . $params['member_phone'] . '","' . $now . '","' . $now . '")';
$this->dbSource->connect($this->dbConfig);
$res = $this->dbSource->query($sql);
if ($res === false) {
return;
}
});
}
定义要增加的内容
$member_data = array(
'member_name' => '奇葩',
'member_phone' => 'qipaqipa'
);
$mysql->add($member_data);
数据库中查看,添加成功
第四步:编辑
//修改
public function edit($params)
{
Co\run(function () use ($params) {
echo "<pre>";
print_r($params);
echo $sql = ' update qipa_member set member_name="' . $params['member_name'] . '",member_phone="' . $params['member_phone'] . '" where id =' . $params['id'];
$this->dbSource->connect($this->dbConfig);
$res = $this->dbSource->query($sql);
//打印结果
var_dump($res);
//如果是false,表示出错
if ($res === false) {
//打印报错原因
var_dump($this->dbSource->errno, $this->dbSource->error);
return;
}
});
}
定义要修改的内容和指定id
$member_edit = array(
'id' => 1,
'member_name' => '奇葩天地网',
'member_phone' => 'www.qipa250.com'
);
$mysql->edit($member_edit);
数据库的字段设置的长度不够,修改数据库结构
原有的
改成现有的
再去执行
会看到true,再查询数据库中
修改成功
第五步:删除
//删除指定id的数据
public function delete($id)
{
Co\run(function () use ($id) {
echo $sql = ' delete from qipa_member where id =' . $id;
echo PHP_EOL;
$this->dbSource->connect($this->dbConfig);
$res = $this->dbSource->query($sql);
var_dump($res);
if ($res === false) {
//打印报错原因
var_dump($this->dbSource->errno, $this->dbSource->error);
return;
}
});
}
传入错误的值
$id = '4i4';
$mysql->delete($id);
打印报错
数据库中有三条记录,我们把id=4的记录删掉
传入正确的值
$id = 4;
$mysql->delete($id);
数据库中已经删掉id=4的记录
第六步:事务
数据库中用户1和用户2,各有100元
操作:将id等于1的用户钱减少50元,值为50,id等于2的用增加50,值为150 若是失败,则回滚
事务方法
//事务
public function transaction($edit_data)
{
Co\run(function () use ($edit_data) {
//数据库中用户1和用户2,各有100元
//操作:将id等于1的用户钱减少50元,值为50,id等于2的用增加50,值为150
//链接数据库
$this->dbSource->connect($this->dbConfig);
//开始事务
$this->dbSource->begin();
echo $sql_from = ' update qipa_money set money=50 where member_id =' . $edit_data['from_id'];
echo PHP_EOL;
echo $sql_to = ' update qipa_money set money="www.qipa250.com" where member_id =' . $edit_data['to_id'];
echo PHP_EOL;
//执行第一条数据
$res_from = $this->dbSource->query($sql_from);
var_dump($res_from);
if ($res_from === false) {
//打印报错原因
var_dump($this->dbSource->errno, $this->dbSource->error);
//如果报错,回滚数据
$this->dbSource->rollback();
return;
}
//执行第二条数据
$res_to = $this->dbSource->query($sql_to);
var_dump($res_to);
if ($res_to === false) {
//打印报错原因
var_dump($this->dbSource->errno, $this->dbSource->error);
//如果报错,回滚数据
$this->dbSource->rollback();
return;
}
//提交数据
$this->dbSource->commit();
});
}
执行报错,发现第一条执行成功,true,第二条返回false失败,并打印了失败原因
查询数据库中 发现并没有变化
我们将第二条sql语句修改正确
echo $sql_to = ' update qipa_money set money=150 where member_id =' . $edit_data['to_id'];
再去执行命令
发现两条数据都返回成功,查看数据库中
发现已经更新成功