为了账号安全,请及时绑定邮箱和手机立即绑定
  • 获取的ID放在case:删除里面,也就是说获取的相应的数据和应该放在相应的case里面 case 'drop': $id = $_GET['id']; // echo "删除第".$id; $sql = "delete from user where id={$id}"; $res = $mysqli->query($sql); if($res){
    查看全部
  • connect_error:错误信息 connect_erron:错误编号
    查看全部
    1 采集 收起 来源:MySQLi使用解析

    2017-03-21

  • 1.注入的解释: //如果 $name=“'or 1=1#”; $pwd=md5(“123123”); $sql="select * from users where username='$name' andpassword='$pwd'"; //则以上的SQL语句会被php解析为: select * from users where username='' or 1=1#' and password=md5(‘’) 因为“#”在mysql中是注释符,这样井号后面的内容将被mysql视为注释内容,这样SQL语句就变成了: select * from users where username='' or 1=1 因为1永远=1,所以where条件永远真,则结果就相当于select * from users 2.因为预定义在$mysqli_stmt=$mysqli->prepare($sql);时已经将SQL模板传递给mysql数据库并让数据库系统做语句分析,之后的传递参数将不对SQL语句做分析,所以不会出现上面所说的注入. 3.获得结果集 $mysqli_stmt->store_result(); 4.当查询语句返回的是结果集时,会因为在内存中存储结果集而占用空间,所以在之后不需要相应结果集的情况下释放结果集,回收内存空间. //释放结果集 $mysqli_stmt->free_result(); 5.关闭预处理语句 $mysqli_stmt->close();
    查看全部
  • $mysqli->multi_query()多条SQL语句执行方法(下篇) 3.$mysqli->multi_query()多条SQL语句执行方法说明: 1).multi_query()逐条执行SQL语句,当其中有一条语句执行失败,后面的语句不会继续执行; 2).如果第一条语句执行成功,无论后面有几条语句执行失败,返回值都为true; 3).当第一条语句执行失败,后面的语句不会执行(与1说明情况相同),返回值为false; 4).以上只对增、删、改来说; 5).如果是查询操作,可以对执行多个查询语句,并将所有结果集存储在mysqli对象中,返回true或者false(返回true或者false的情况,参看前面的1-3); 6).使用use_result()或story_result()获得multi_query()查询后的一个结果集(结果集指针当前指向的结果集,从第一条开始); 7).more_result()检测是否还有更多的结果集,有返回真; 8).next_result()将结果集指针移动指向下一条结果集,移动成功返回真; 使用multi_query()返回值只有返回true或者false(个人已经做过实验),而所有结果集都是由$mysqli这个对象自行存储 if($mysqli->multi_query($sql)){ do{ if($mysqli_result=$mysqli->store_result()){ //赋值语句的返回的是被赋的值 $rows[]=$mysqli_result->fetch_all(MYSQLI_ASSOC); } //more_result()检测是否还有更多的结果集,next_result()将结果集指针移动指向下一条结果集 }while($mysqli->more_results() && $mysqli->next_result()); }else{ echo $mysqli->error; } print_r($rows);
    查看全部
  • $mysqli->multi_query()多条SQL语句执行方法(上篇) 1.多条SQL语句执行方法中,多条SQL语句用";"隔开($mysqli->query()和mysql_query()中SQL语句不能用”;”结束) $sql="INSERT user(username,password,age) VALUES('imooc3','imooc3',32);"; $sql.="UPDATE user SET age=5 WHERE id=28;"; $sql.="DELETE FROM user WHERE id=25;"; $res=$mysqli->multi_query($sql); 2.几乎所有的高级语言赋值语句都是有值的(包括PHP,C,C++,JAVA,javascript),返回的是被赋的值;比如: echo $a=$b=10;这个表达式的运行过程是 $b=10 返回10; $a=10(返回的值) 返回10; echo 10(返回的值)echo没有返回值.
    查看全部
  • MYSQLi中事务处理上篇(事务原理与操作方法说明) 1.一个事务是一个连续的一组数据库操作只有当该组内的每个单独的操作都成功了,整个事务才执行。如果在事务的任何操作失败,则整个事务将失败。 事务有以下四个标准属性 原子性: 确保工作单元内的所有操作都成功完成,否则事务将被中止在故障点,和以前的操作将回滚到以前的状态。 一致性: 确保数据库正确地改变状态后,成功提交的事务。 隔离性: 使事务操作彼此独立的和透明的,一个事务处理后的结果,影响了其他事务,那么这个事务会撤回。 持久性: 确保提交的事务的结果或效果的系统出现故障的情况下仍然存在(软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改). 2.MYSQL的事务处理主要有两种方法(在数据库命令行下) 1).用begin,rollback,commit来实现 begin开始一个事务 rollback事务回滚 commit 事务确认 在这种方法时,当用commit确认或者rollback回滚后,事务处理功能将结束,如果要开启下一个事务,需要从新用begin开始 2).直接用set来改变mysql的自动提交模式 //mysql将每一条SQL语句当做一个事务,当输入一条SQL语句并以";"接受时系统将提交这一条SQL语句并执行 mysql默认是自动提交的,也就是你提交一个query,就直接执行!可以通过 set autocommit = 0 禁止自动提交 set autocommit = 1 开启自动提交 在这种方法时,当用commit确认或者rollback回滚后,事务处理功能将不会结束,而是同时开启了新的事务!必须用set autocommit = 1 来关闭事务功能
    查看全部
  • 1.注入的解释: //如果 $name=“or 1=1#”; $pwd=md5(“123123”); $sql="select * from users where username='$name' andpassword='$pwd'"; //则以上的SQL语句会被php解析为: select * from users where username='' or 1=1#' and password=md5(‘’) 因为“#”在mysql中是注释符,这样井号后面的内容将被mysql视为注释内容,这样SQL语句就变成了: select * from users where username='' or 1=1 因为1永远=1,所以where条件永远真,则结果就相当于select * from users 2.因为预定义在$mysqli_stmt=$mysqli->prepare($sql);时已经将SQL模板传递给mysql数据库并让数据库系统做语句分析,之后的传递参数将不对SQL语句做分析,所以不会出现上面所说的注入. 3.获得结果集 $mysqli_stmt->store_result(); 4.当查询语句返回的是结果集时,会因为在内存中存储结果集而占用空间,所以在之后不需要相应结果集的情况下释放结果集,回收内存空间. //释放结果集 $mysqli_stmt->free_result(); 5.关闭预处理语句 $mysqli_stmt->close();
    查看全部
  • mysqli扩展或者pdo操作数据库来代替mysql扩展 1.mysqli可以面向对象或者面向过程 2.支持预处理语句 3.支持事物 mysqli速度也更快一些。支持mysql PASSWORD哈希的验证程序,提高了安全性
    查看全部
  • 无法发布查错;插入语句表名写错了所以没有对象
    查看全部
  • 更新记录: $sql = "UPDATE user SET age=age+10 WHERE NAME = 'LISI'"; $mysqli->query($sql);
    查看全部
  • if($mysqli->multi_query($sql)){ do{ if($cursor = $mysqli->store_result()){ $rows = $cursor->fetch_all(MYSQLI_ASSOC); print_r($rows); echo '<hr/>'; } }while($mysqli->more_results() && $mysqli->next_result()); }else{ echo $mysqli->error; }
    查看全部
  • /* 插入信息 */ $sql = <<<EOF INSERT INTO php.mysqli (username, password) VALUES ('king', SHA('king')); EOF; $res = $mysqli->query($sql); if ($res) { //得到Auto_increment的值 echo '第' . $mysqli->insert_id . '位注册用户'; } else { //得到上一步的错误信息 echo $mysqli->errno . ' : ' . $mysqli->error; } echo '<hr/>';
    查看全部
  • 表类型必须是InnoDB类型的
    查看全部
  • 预处理<br> $sql="select * from user where id = ? and name = ?";//使用占位符<br> 1.$mysqli_stmt = $mysqli->prepare($sql)//预处理方法放回stmt对象<br> $id=1;$name='哈好';<br> 2.$mysqli_stmt->bind_param('is',$id,$name);//调用stmt对象中bind_param方法来绑定之前占位符,第一个参数为参数类型s为字符串i为整型d为浮点型,后面的参数就是变量和前面对应<br> 3.$mysqli_execute()使用stmt对象execute方法执行预处理语句,返回值为布尔值<br> 4.stmt对象bind_result()可以绑定返回的数据变量,如查询语句中查询id、username、age,则可以用$id,$username,$age来代替(名称随便)将查询结果绑定到变量,要和记录集里面拾取的字段数量一致,一个字段将赋值给一个变量,否则会报错Number of bind variables doesn't match number of fields in prepared statement 5.mysqli-stmt->fetch()方法返回结果集中一条数据 6.$mysqli_stmt->free_result();//释放结果集 7.$mysqli_stmt->close();//关闭连接
    查看全部
  • 通过mysqli类库操作数据库步骤 建立到mysql的链接 打开指定的数据库 设置默认的客户端的字符集 执行的sql查询 释放结果集 关闭链接 <<<EOF EOF;表述一个非常长的字符串。 1.建立到mydql数据的链接 $mysqli = @new mysqli('localhost','root','root','test'); 或者$mysqli = new mysqli() $mysqli->connect('127.0.0.1','root','root','text'); 1.建立到mydql数据的链接 $mysqli = @new mysqli('localhost','root','root','test'); 或者$mysqli = new mysqli() $mysqli->connect('127.0.0.1','root','root','text'); 2.打开指定的数据库 $musqli->select_db('test'); //$mysqli->connect_errno 错误编号 //$mysqli->connect_error 错误信息 if($mysqli->connect_errno){ die('connect error:'$mysqli->connect_error); } echo '客户端的信息:'.$mysqli->client_info; 或者echo $mysqli->get_client_info(); echo“客户端的版本:”$mysqli->cilent_version. 服务器信息 $mysqli->server_info $mysqli->get_server_info(); 2.设置字符集: $mysqli->set_charset('utf8'); //3:执行sql查询 $sql=<<<EOF CREATE TABLE IF NOT EXISTS mysqli( id TINYINT UNSIGNED AUTO_INCREMENT KEY, username VARCHAR(20) NOT NULL); EOF $res = $mysqli->query($sql); 返回值可能是布尔值或者是mysqli_result对象。 4.关闭连接 $mysqli->close();
    查看全部
    1 采集 收起 来源:MySQLi使用解析

    2018-03-22

举报

0/150
提交
取消
课程须知
学习本门课程之前,建议先了解一下知识,会更有助于理解和掌握本门课程 1、掌握PHP基本的语言语法,掌握面向对象知识。 2、了解数据库相同的基础知识,能对数据进行简单的增删改查。
老师告诉你能学到什么?
1、MySQLi基于面向对象中常用的内容剖析。 2、MySQLi基于面向过程中常用的内容剖析。 3、通过MySQLi实现无刷新评论系统。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!