为了账号安全,请及时绑定邮箱和手机立即绑定
  • mysqli预处理语句
    查看全部
  • 6. 查询 $sql=“SELECT id,username,password,email FROM user”; $res=mysqli_query($link,$sql); //echo mysqli_num_rows($res); if($res && mysqli_num_rows($res)>0){ while($row=mysqli_fetch_array($result,MYSQLI_ASSOC)){ //print_r($row); $rows[]=$row; } } print_r($rows); mysqli_free_result($res); //释放结果集 7. 关闭连接 mysqli_close($link);
    查看全部
  • 4. 更新 $sql=“UPDATE user SET age=age+10 WHERE id=12;”; $sql.=“DELETE FROM user WHERE id=13”; $res=$mysqli_multi_query($link,$sql); var_dump($res); echo ‘<hr/>’; 5. 预处理语句 $sql=“INSERT user(username,password,age) VALUES(?,?,?)”; $stmt=$mysqli_prepare($link,$sql); $username=“abc”; $password=“123”; $age=“12”; mysqli_stmt_bind_param($stmt, ‘ssi’, $username,$password,$age); mysqli_stmt_execute($stmt);
    查看全部
  • <?php //1.连接 $link = mysqli_connect(‘localhost’,’root’,’root’,’test’) or die(‘Connect Error:’.mysqli_connect_errno().”:”.mysqli_connect_error()); //2.编码 mysqli_set_charset($link,’UTF8’); //3.查询 $sql=“INSERT user(username,password,age) VALUES(‘a’,’a’,11);”; $res=$mysqli_query($link,$sql); if($res){ echo ‘AUTO_INCREAMENT:’.$mysqli_insert_id($link); echo ‘<hr/>’; echo ‘AFFECTED_ROWS:’.$mysqli_affected_rows($link); }else{ echo ‘ERROR:<br/>’; echo mysqli_errno($link).”:”.mysqli_error($link); } print_r($link); ?>
    查看全部
  • $sql="SELECT username,email,url,face,content,pubTime FROM comments"; $mysqli_result=$mysqli->query($sql); if($mysqli_result&& $mysqli_result->num_rows>0){ while($row=$mysqli_result->fetch_assoc()){ $comments[]=new Comment($row); } } 将用户提交的信息转换为json数据并提交给文件doAction.php,用户输入信息有误等信息的显示,都是由javascript完成
    查看全部
  • $res=Comment::validate($arr); //数据在自定义类方法中获取,过滤,保存 //json_encode()对变量进行JSON编码,json_decode()对JSON格式的字符串进行转换为PHP变量. $comment的output()方法 public function output(){ if($this->data['url']){ $link_start="<a href='".$this->data['url']."' target='_blank'>"; //a标签分开写是为了能在a标签中插入其他元素 $link_end="</a>"; } $dateStr=date("Y年m月d日 H:i:s",$this->data['pubTime']); $res=<<<EOF <div class='comment'> <div class='face'> {$link_start} <img width='50' height='50' src="img/{$this->data['face']}.jpg" alt="" /> {$link_end} </div> <div class='username'> {$link_start} {$this->data['username']} {$link_end} </div> <div class='date' title='发布于{$dateStr}'> {$dateStr} </div> <p>{$this->data['content']}</p> </div> EOF; return $res; }
    查看全部
    0 采集 收起 来源:表单数据处理

    2018-03-22

  • //2.2过滤用户输入的特殊字符 public static function validate_str($str){ if(mb_strlen($str,'UTF8')<1){ //以UTF8格式获取字符串的长度获取字符串长度 return false; } //htmlspecialchars把预定义的字符转换为HTML实体,ENT_QUOTES为编码$str内的双引号和单引号 //nl2br()在字符串中的每个新行(\n)之前插入 HTML 换行符(<br> 或 <br />) $str=nl2br(htmlspecialchars($str,ENT_QUOTES)); return $str; }
    查看全部
    0 采集 收起 来源:表单输入过滤

    2018-03-22

  • 2.程序分析 //2.1检测用户输入的数据 public static function validate(&$arr){ //&为引用声明:&$arr if(!($data['email']=filter_input(INPUT_POST,'email',FILTER_VALIDATE_EMAIL))){ $errors['email']='请输入合法邮箱'; } if(!($data['url']=filter_input(INPUT_POST,'url',FILTER_VALIDATE_URL))){ $url=''; } //过滤函数的回调函数,函数名必须存入名为 "options" 的关联数组中 if(!($data['content']=filter_input(INPUT_POST,'content',FILTER_CALLBACK,array('options'=>'Comment::validate_str')))){ $errors['content']='请输入合法内容'; } //过滤标准的相应参数必须存入一个名为 "options" 的关联多维数组中。 $int_options=array( 'options'=>array( //FILTER_VALIDATE_INT对应参数 'min_range'=>1, //min_range - 规定最小整数值 'max_range'=>5 //max_range - 规定最大整数值 ) ); if(!($data['face']=filter_input(INPUT_POST,'face',FILTER_VALIDATE_INT,$int_options))){ $errors['face']='请选择合法头像'; } if(!empty($errors)){ $arr=$errors; return false; } $arr=$data; $arr['email']=strtolower(trim($arr['email'])); //strtolower()将字符串转换成小写 trim()去掉前后空格 return true; }
    查看全部
    0 采集 收起 来源:表单输入过滤

    2018-03-22

  • 1.php5.4起支持回调函数 1).函数做回调函数,以 string 类型传递其名称。()可以使用任何内置或用户自定义函数,但不能使用语言结构(如:array(),echo,empty(),eval(),exit(),isset(),list(),print 或 unset() )函数 2).一个已实例化的对象的方法被作为数组传递,下标 0 包含该对象,下标 1 包含方法名。 3).静态类方法也可不经实例化该类的对象而传递,只要在下标 0 中包含类名而不是对象。自 PHP 5.2.3 起,也可以传递 'ClassName::methodName'。 function my_callback_function() { echo 'hello world!'; } class MyClass { static function myCallbackMethod() { echo 'Hello World!'; } } //函数做回调函数 call_user_func('my_callback_function'); //静态方法做为回调函数 call_user_func(array('MyClass', 'myCallbackMethod')); call_user_func('MyClass::myCallbackMethod'); // 对象方法做回调函数 $obj = new MyClass(); call_user_func(array($obj, 'myCallbackMethod')); filter_input()为几大过滤函数之一的:获取脚本外数据并进行字符合法化过滤函数. filter_input(INPUT_POST,'email',FILTER_VALIDATE_EMAIL) filter_input()参数说明:第一个参数表示调用的数据是外部通过POST方法传输过来,第二个参数表明从$_POST[email]中取得具体数据,第三个参数说明具体过滤标准,第四个参数为具体过滤标准的相应参数(可省略)
    查看全部
    0 采集 收起 来源:表单输入过滤

    2017-11-13

  • 用php中的mysqli库实现: //先关闭自动提交功能 $mysqli->autocommit(FALSE); $sql="UPDATE account SET money=money-200 WHERE username='king'"; $res=$mysqli->query($sql); $res_affect=$mysqli->affected_rows; $sql1='UPDATE account SET money=money+200 WHERE username="queen"'; $res1=$mysqli->query($sql1); $res1_affect=$mysqli->affected_rows; if($res &&$res_affect>0 && $res1 && $res1_affect>0){ //判断是否所有语句都运行正确 $mysqli->commit(); //提交系统执行 echo '转账成功<br/>'; $mysqli->autocommit(TRUE); //恢复自动提交功能 }else{ $mysqli->rollback(); //回滚到自动事务初始状态(这个函数还有$mysqli->autocommit(TRUE)的功能) echo '转账失败<br/>'; }
    查看全部
  • MySQLi中使用预处理语句执行查询语句 $sql="SELECT id,username,age FROM user WHERE id>=?"; $mysqli_stmt=$mysqli->prepare($sql); $id=20; $mysqli_stmt->bind_param('i',$id); if($mysqli_stmt->execute()){ //bind_result():绑定结果集中的值到变量,必须与查询结果字段一一对应 $mysqli_stmt->bind_result($id,$username,$age); //遍历结果集 //如果调用$mysqli_stmt->store_result()将数据先按照一定的格式存储,则可调用$mysqli_stmt->data_seek()来控制输出那一条记录 while($mysqli_stmt->fetch()){ echo '编号:'.$id,'<br/>'; echo '用户名:'.$username,'<br/>'; echo '年龄:'.$age.'<br/>'; echo '<hr/>'; } } $mysqli_stmt->free_result(); $mysqli_stmt->close(); $mysqli->close();
    查看全部
  • 1.注入的解释: //如果 $name="'or 1=1#"; $pwd=md5("123123"); $sql="select * from users where username='$name' and password='$pwd'"; //则以上的SQL语句会被php解析为: select * from users where username='' or 1=1#' and password=md5('123123') 因为“#”在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->close();
    查看全部
  • 1.预处理工作流程 //定义SQL语句模板(用?做为占位符) $sql="INSERT user(username,password,age) VALUES(?,?,?)"; //将查询传给mysql预处理,返回一个mysqli_stmt类对象 $mysqli_stmt=$mysqli->prepare($sql); //此时mysql会解析查询,但不会执行。 $username='king'; $password=md5('king'); $age=12; //将变量绑定到查询占位符(s代表字符串,i代表整数,d代表浮点数,b代表布尔值) $mysqli_stmt->bind_param('ssi',$username,$password,$age); //执行预处理语句 if($mysqli_stmt->execute()){ echo $mysqli_stmt->insert_id; echo '<br/>'; }else{ $mysqli_stmt->error; } //之后只用修改变量值与执行即可重复使用预处理(不需要从新在此绑定参数$mysqli_stmt->bind_param()) $username='king1'; $password=md5('king1'); $age=22; $mysqli_stmt->execute(); 2.相比于直接执行SQL语句,预处理语句有三个主要优点: 1).预处理语句大大减少了分析时间,值在$mysqli_stmt=$mysqli->prepare($sql);时mysql会分析语句. 2).绑定参数减少了服务器带宽,你只需要发送查询的参数,而不是整个语句。 3).预处理语句针对SQL注入是非常有用的,因为参数值发送后使用不同的协议,保证了数据的合法性。
    查看全部
  • //取得结果集中的一条记录,作为对象返回 $row=$mysqli_result->fetch_object(); //移动结果集内部指针(结果集内通过这个指针来确定返回那一条记录) $mysqli_result->data_seek(0);//指针从0开始计数 while($row=$mysqli_result->fetch_assoc()){ $rows[]=$row; } //释放结果集,回收内存地址 $mysqli_result->free(); } //关闭数据库连接 $mysqli->close();
    查看全部
  • $sql="SELECT id,username,age FROM user"; $mysqli_result=$mysqli->query($sql); //此时$mysqli->query()返回的是一个结果集对象,用变量$mysqli_result接收 if($mysqli_result && $mysqli_result->num_rows>0){ //echo $mysqli_result->num_rows; //显示记录数 //获取结果集中所有记录,默认返回的是二维的数组(索引+索引的形式) //$rows=$mysqli_result->fetch_all(); //不同的参数返回不同形式的数组(都是获取结果集中所有记录) $rows=$mysqli_result->fetch_all(MYSQLI_NUM); //返回索引数组 $rows=$mysqli_result->fetch_all(MYSQLI_ASSOC);//返回关联数组 $rows=$mysqli_result->fetch_all(MYSQLI_BOTH); //返回索引数组与关联数组 //每次只能去一条记录 $row=$mysqli_result->fetch_row();//取得结果集中一条记录作为索引数组返回(=mysql_fetch_row();) $row=$mysqli_result->fetch_assoc();//取得结果集中的一条记录作为关联数组返回(=mysql_fetch_assoc();) //取得结果集中的一条记录,不同的参数返回不同形式的数组(=mysql_fetch_array();) $row=$mysqli_result->fetch_array();//默认以关联数组和索引数组两种方式返回 $row=$mysqli_result->fetch_array(MYSQLI_ASSOC); //MYSQLI_ASSOC返回关联数组, MYSQLI_NUM返回索引数组, MYSQLI_BOTH返回索引数组与关联数组
    查看全部

举报

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

微信扫码,参与3人拼团

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

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