mysqli操作数据库
1 连接数据库:可以使用对象或函数来连接(我们这里主要用mysqli对象,附带着函数连接)
//创建mysqli对象(也可以叫做资源句柄)
$_mysqli = new mysqli();
//连接数据库
//如果不使用面向对象,完全可以使用mysqli_connect()函数来连接
$_mysqli->connect('localhost', 'root', 'kang123456', 'guest'); //断开mysqli
//mysqli_close()函数
$_mysqli->close();
还可以创建对象时直接连接
//创建mysqli对象时直接连接数据库
$_mysqli = new mysqli('localhost', 'root', 'kang123456', 'guest');
//另外选择一个数据库
$_mysqli->select_db('testguest'); $_mysqli->close();
2 错误:连接错误和操作错误
连接错误:
//连接错误
//当因为参数错误导致连接失败是,对象没有创建成功,所以就没有权力调用mysqli对象的方法,所以要用函数方式去捕捉错误
@$_mysqli = new mysqli('localhost', 'roo', 'kang123456', 'guest');
//0表示没有任何错误
if (mysqli_connect_errno()){
echo '数据库连接错误'.mysqli_connect_error();
exit();
}
$_mysqli->close();
操作错误:
//操作错误
@$_mysqli = new mysqli('localhost', 'root', 'kang123456', 'guest');
//选择一个不存在的数据库,产生操作错误
$_mysqli->select_db('dfas');
//操作错误
if ($_mysqli->errno){
echo '数据库操作错误'.$_mysqli->error;
exit();
}
$_mysqli->close();
3 与数据库进行交互:创建 获取 更新 删除
创建与获取
<?php
//操作错误
@$_mysqli = new mysqli('localhost', 'root', 'kang123456', 'testguest');
//1 设置编码
$_mysqli->set_charset('utf8');
//2 创建sql
$_sql = 'select * from tg_user';
//3 执行sql,把结果集赋给变量
$_result = $_mysqli->query($_sql);
//取得第一行数据,运行一次,指针下移一条
$_user = $_result->fetch_row();
//4 获取
//4-1 使用索引数组循环出用户名
while (!!$_row = $_result->fetch_row()){
echo $_row[3].'<br />';
}
//4-2 使用关联数组循环出用户名
while (!!$_assoc = $_result->fetch_assoc()){
echo $_assoc['tg_username'].'<br />';
}
//4-3 使用索引加关联数组
print_r($_result->fetch_array());
//4-4 使用oop方式,但返回的是对象
while (!!$_object = $_result->fetch_object()){
echo $_object->tg_username.'<br />';
}
?>
查看选择了多少行和影响了多少行:影响了多少行是mysqli下的属性
//确定选择了多少行和受影响的行
@$_mysqli = new mysqli('localhost', 'root', 'kang123456', 'testguest');
if ($_mysqli->errno){
echo '数据库连接错误'.$_mysqli->error;
}
$_mysqli->set_charset('utf8');
$_sql = 'select * from tg_user limit 0,10';
$_result = $_mysqli->query($_sql);
//看选择了多少行,只有查
echo $_result->num_rows; //10
//增删改查影响了多少行(如果改成一样的影响0行)
echo $_mysqli->affected_rows;//
获取字段(列)
//1 查看结果集里有多少字段(列)
echo $_result->field_count;
//2 获取字段的名字,一次一个,指针下移
$_field = $_result->fetch_field();//返回的是对象
echo $_field->name; //tg_id
print_r($_field);//打印如下
/* stdClass Object
(
[name] => tg_id
[orgname] => tg_id
[table] => tg_user
[orgtable] => tg_user
[def] =>
[db] => testguest
[catalog] => def
[max_length] => 2
[length] => 8
[charsetnr] => 63
[flags] => 49699
[type] => 9
[decimals] => 0
) */
//遍历
while (!!$_field = $_result->fetch_field()) {
echo $_field->name.'<br />';
}
//3 一次性取得所有字段
$_fields = $_result->fetch_fields(); //返回的是数组,每个是和上边一样的对象
print_r($_fields);
//遍历
foreach ($_fields as $_field){
echo $_field->name.'<br />';
}
移动指针:移动数据指针和移动字段指针
//移动指针
//1 移动数据指针
$_result->data_seek(0);//移动到第0个就是原来的位置
$_row = $_result->fetch_row();
echo $_row[3]; //2 移动字段指针
$_result->field_seek(0);
$_field = $_result->fetch_field();
echo $_field->name; //tg_id
多条sql语句一起执行
//创建三个修改的sql语句
$_sql .= 'update tg_user set tg_username="党兴明" where tg_id=43;';
$_sql .= 'update tg_flower set tg_fromuser="党兴明" where tg_id=1;';
$_sql .= 'update tg_friend set tg_fromuser="党兴明" where tg_id=1';
//一起执行
$_mysqli->multi_query($_sql);
//创建三条选择数据
$_sql .= 'select * from tg_user;';
$_sql .= 'select * from tg_flower;';
$_sql .= 'select * from tg_friend';
//echo $_mysqli->multi_query($_sql); //1
if ($_mysqli->multi_query($_sql)){
//获取当前结果集
$_result = $_mysqli->store_result(); //第一条sql语句
print_r($_result->fetch_row());
echo '<br >';
//将结果集指针移动到下一条
$_mysqli->next_result();
$_result = $_mysqli->store_result(); //第二条sql语句
print_r($_result->fetch_row());
echo '<br >';
//将结果集指针移动到下一条
$_mysqli->next_result();
$_result = $_mysqli->store_result(); //第三条sql语句
print_r($_result->fetch_row());
}else {
echo '错误';
exit();
}
事务:
//事务
@$_mysqli = new mysqli('localhost', 'root', 'kang123456', 'testguest');
$_mysqli->set_charset('utf8');
//关闭自动提交
$_mysqli->autocommit(false);
//创建两个sql语句
$_sql .= 'update tg_flower set tg_flower=tg_flower-50 where tg_id=1;';
$_sql .= 'update tg_friend set tg_state=tg_state+50 where tg_id=1'; //执行多条sql语句,只有两句都成功就成功,否则回滚
if ($_mysqli->multi_query($_sql)){
//通过影响的行数,来判断是否成功执行,如果sql语句有误,那么就执行回滚,否则手工提交
$_success = $_mysqli->affected_rows == 1 ? true : false;
//下移指针
$_mysqli->next_result();
$_success2 = $_mysqli->affected_rows == 1 ? true : false;
//如果两条都成功
if ($_success && $_success2){
//手工提交
$_mysqli->commit();
echo '完美提交';
}else {
//否则回滚
$_mysqli->rollback();
echo '回滚, 操作归零';
}
}else {
echo '第一条有错误';
exit();
}
//开启自动提交
$_mysqli->autocommit(true);
mysqli操作数据库的更多相关文章
- php 通过mysqli 操作数据库mysql
目录 php mysqli 操作数据库 连接数据库 通过mysqli 创建数据库 通过mysqi 创建数据表 通过mysqli向数据表中插入信息 通过mysqli 读取数据 where语句的应用 通过 ...
- 比Mysqli操作数据库更简便的方式 。PDO
下面来说一下PDO 先画一张图来了解一下 mysqli是针对mysql这个数据库扩展的一个类 PDO是为了能访问更多数据库 如果出现程序需要访问其他数据库的话就可以用PDO来做 PDO数据访问抽象层1 ...
- 在PHP中使用Mysqli操作数据库
PHP的 mysqli 扩展提供了其先行版本的所有功能,此外,由于 MySQL 已经是一个 具有完整特性的数据库服务器 , 这为PHP 又添加了一些新特性 . 而 mysqli 恰恰也支持了 这些新特 ...
- 在PHP中使用MySQL Mysqli操作数据库 ,以及类操作方法
先来操作函数部分,普遍的MySQL 函数方法,但随着PHP5的发展,有些函数使用的要求加重了,有些则将废弃不用,有些则参数必填... ================================= ...
- mysqli 操作数据库(转)
从php5.0开始增加mysql(i)支持 , 新加的功能都以对象的形式添加 i表示改进的意思 功能多.效率高.稳定 编译时参数: ./configure --with-mysql=/usr/bin/ ...
- mysqli 操作数据库
从php5.0开始增加mysql(i)支持 , 新加的功能都以对象的形式添加 i表示改进的意思 功能多.效率高.稳定 编译时参数: ./configure --with-mysql=/usr/bin/ ...
- PHP MysqlI操作数据库
1连接数据库. //procedural style $mysqli = mysqli_connect('host','username','password','database_name'); / ...
- PHP MysqlI操作数据库(转)
1连接数据库. Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter. ...
- MYSQLI - mysqli操作数据库
<?php //模型类 class Model { //数据库连接 private $_conn = NULL; //where语句 private $_where = NULL; //表名称 ...
随机推荐
- mysql 错误 ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number 解决办法
MySQL创建用户(包括密码)时,会提示ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number: 问题原因: ...
- 数据结构作业——Fresh Meat(优先队列)
Fresh Meat Description 我们故事的主角是屠夫扒鸡,起初屠夫扒鸡只是一个佣兵,他先去拜了太上老君为师,学了一技能肉钩,凭着一技肉钩驰骋决斗场,达到一段以后到阿尔伯特那里偷学了二技能 ...
- writing
1.作文类型和结构2.作文的四个评分标准3.作文的常用句型4.作文的逻辑观点 大作文分为几类:1.A类(Argument): 这类作文实际上是比较常见的,比如:Caring for children ...
- NOIp 1109
停课后的第一场模拟赛,应该不会怎么说今天的模拟赛,除了第一题不知道那种筛法的复杂度是$log$的没敢写,其他都挺水的.另外,第三题的数据也弱化了,建议去这里再交一遍. 贴一下AC代码,有兴趣可以参考一 ...
- Mac安装mysql
### 第一步 安装后一定要记住初始密码 ### 第二步 打开终端 cd /usr/local/mysql/bin ./mysql -u root -p #输入初始密码 set password = ...
- 第一章 Part 2/2 Git 一览
被跟踪文件(Tracked files) 被跟踪文件是 Git 管理的工作目录 (存储库) 中的文件.当你添加新文件或使更新现有文件时,Git都会跟踪这些文件变化.在某个时间点,你将通过命令将这些文件 ...
- 语言模型kenlm的训练及使用
一.背景 近期研究了一下语言模型,同事推荐了一个比较好用的工具包kenlm,记录下使用过程. 二.使用kenlm训练 n-gram 1.工具介绍:http://kheafield.com/code/k ...
- Android ActionBar 初探
1.指南,例子,个人感觉 首先上官网指南链接http://developer.android.com/guide/topics/ui/actionbar.html 参考了官网上的例子http://de ...
- 移动端视网膜(Retina)屏幕下1px边框线 解决方案
原因: 因为Retine屏的分辨率始终是普通屏幕的2倍,1px的边框在devicePixelRatio=2的retina屏下会显示成2px. 但在IOS8中,已经支持0.5px了,那就意味着, 在de ...
- Https方式使用Git@OSC设置密码的方式
Https方式使用Git@OSC设置密码的方式 62561_silentboy Zoker3 years ago member https方式每次都要输入密码,按照如下设置即可输入一次就不用再手输入密 ...