14.2 执行一条语句
本节知识点梳理:
1 执行DML增删改语句,返回布尔值,
执行DQL查询语句,成功返回mysqli_result 结果集对象 失败返回false
2 获取结果集的四种方式 fetch_assoc();fetch_row();fetch_array();fetch_object();
3 复用结果集,把指针调回第一行数据 $link->data_seek(0);
4 判断DML语句是否成功,返回受影响的行数大于0就是成功了。$link->affected_rows>0 //是属性 affected [əˈfektɪd] 单词本意 受影响的
5 获取刚刚入库数据的主键ID值 $link->insert_id;
一 执行DQL语句
$sql = 'select * from bbs_category'; $result = $link->query($sql); echo '<pre>'; //1 返回关联数组(推荐第一种) while ($row = $result->fetch_assoc()) { var_dump($row['name']); } //2 返回索引数组 $result->data_seek(0);//把指针移动到第一行 while ($row = $result->fetch_row()) { var_dump($row[2]); } //3 返回对象 (内置标准类) $result->data_seek(0);//把指针移动到第一行 while ($row = $result->fetch_object()){ var_dump($row); echo '名称是:'.$row->name.'<br>';//访问对象成员 } //4 返回索引+关联数组 $result->data_seek(0);//把指针移动到第一行 while ($row = $result->fetch_array()){ var_dump($row); }
//以上四个方法返回值都一样,如果结果集中没有值了,就返回NULL //NULL转换为布尔为false 所以循环的条件就是:当$row为false时结束循环
二 执行DML语句
$sql = 'insert into bbs_category (name,e_name) values("出国","chuguo")';//增加sql $sql = 'update bbs_category set name="张飞",e_name = "zhangfei" where id=11';//跟新sql $sql = 'delect from bbs_category where id = 10';//删除SQL //判断sql是否执行成功 if ($link->query($sql)){ echo '执行成功'; } else { echo '<br/>执行失败,出错SQL:'.$sql; echo '<br/>失败的原因:'.$link->error; } //判断一下是否真正的影响我们表 if($link->affected_rows > 0){ echo '<br> 对表,真正进行改变'; }else{ echo '<br> 没有对表造成任何影响'; } //获取刚刚插入的自增id echo $link->insert_id;
三 操作事务
//1. 编写sql $sql1 = "update `account` SET money = money - 1 WHERE id = 100"; $sql2 = "update `account` SET money = money + 1 WHERE id = 200"; //2. 开始事务 $link->autocommit(false);//关闭自动提交 改为手动提交 $res1 = $link->query($sql1); $res2 = $link->query($sql2); if($res1 && $res2){ echo '<br> sql语句执行成功, 正式提交'; $link->commit(); }else{ echo '<br> sql语句有执行失败的, 回滚'; $link->rollback(); }