classA{publicstaticfunctionclassName(){echo__CLASS__;}publicstaticfunctiontest(){self::className();}}classBextendsA{publicstaticfunctionclassName(){echo__CLASS__;}}B::test();这将打印出来A另一方面static::它具有预期的行为
classcustomExceptionextendsException{publicfunctionerrorMessage(){//errormessage$errorMsg='Erroronline'.$this->getLine().'in'.$this->getFile().':'.$this->getMessage().'isnotavalidE-Mailaddress';return$errorMsg;}}异常的规则:需要进行异常处理的代码应该放入try代码块内,以便捕获潜在的异常。每个try或throw代码块必须至少拥有一个对应的catch代码块。使用多个catch代码块可以捕获不同种类的异常。可以在try代码块内的catch代码块中再次抛出(re-thrown)异常。简而言之:如果抛出了异常,就必须捕获它如何foreach迭代对象展示foreach工作原理的例子:
header("HTTP/1.1301MovedPermanently");header("Location:/option-a");exit();方法2:
$arr=[['id'=>6,'name'=>'小明'],['id'=>1,'name'=>'小亮'],['id'=>13,'name'=>'小红'],['id'=>2,'name'=>'小强'],];//方法1:手动写排序方法:
functionmyExchange(&$a='',&$b=''){$a=$a.$b;$b=substr($a,0,-strlen($b));$a=substr($a,strlen($a)-strlen($b),strlen($b));returntrue;}2.数组法:
privatefunctionmyExchange(&$a='',&$b=''){$a=array($a,$b);$b=$a[0];$a=$a[1];returntrue;}strtoupper在转换中文时存在乱码,你如何解决?phpechostrtoupper('ab你好c');phpechostrtoupper('ab你好c');(经测试中文系统下不会出现乱码,网上资料说是英文系统或部分盗版系统或因编码格式问题可能出现题述情况。mb系列函数解决(mb系列函数可以显式指明编码)stringmb_convert_case(string$str,int$mode[,string$encoding=mb_internal_encoding()])$mode有三种模式:1.MB_CASE_UPPER:转成大写2.MB_CASE_LOWER:转成小写3.MB_CASE_TITLE:转成首字母大写$encoding默认使用内部编码;也可以显示使用如’UTF-8’;可以用echomb_internal_encoding();来查看;此方法不仅可以解决中文问题,对其他问题也适用。2.手动解决:用str_split(string$string,int$split_length=1)按每个字节切割,像中文能切割成三个字节。对识别到的字节若是英文字母则进行转换。
SELECTOrders.OrderID,Employees.LastName,Employees.FirstNameFROMOrdersRIGHTJOINEmployeesONOrders.EmployeeID=Employees.EmployeeIDORDERBYOrders.OrderID;结果是Employees表的指定列记录会全部显示,相匹配的OrderID也会显示,不匹配的OrderID列会显示为nullUNIONUNION运算符用于组合两个或多个SELECT语句的结果集。要求:UNION中的每个SELECT语句必须具有相同的列数列还必须具有类似的数据类型每个SELECT语句中的列也必须具有相同的顺序UNION运算符默认情况下仅选择不同的值。要允许重复值,请使用UNIONALL结果集中的列名通常等于UNION中第一个SELECT语句中的列名。示例:
SELECTCityFROMCustomersUNIONSELECTCityFROMSuppliersORDERBYCity;查询结果为Customers表和Suppliers表中的City列的所有数据。GROUPBY+COUNT+WHERE组合案例GROUPBY语句通常与聚合函数(COUNT,MAX,MIN,SUM,AVG)一起使用,以将结果集分组为一列或多列示例:
ALTERTABLEtable_nameADDUNIQUE(column_name)(3)普通索引INDEX这是最基本的索引,它没有任何限制。可以在创建表的时候指定,也可以修改表结构,如:
ALTERTABLEtable_nameADDINDEXindex_name(column_name)(4)组合索引INDEX组合索引,即一个索引包含多个列。可以在创建表的时候指定,也可以修改表结构,如:
ALTERTABLEtable_nameADDINDEXindex_name(column1_name,column2_name,column3_name)(5)全文索引FULLTEXT全文索引(也称全文检索)是目前搜索引擎使用的一种关键技术。它能够利用分词技术等多种算法智能分析出文本文字中关键字词的频率及重要性,然后按照一定的算法规则智能地筛选出我们想要的搜索结果。可以在创建表的时候指定,也可以修改表结构,如:
数据库主从复制M-S是怎么同步的?是推还是拉?会不会不同步?怎么办
SELECT*FROMuserWHEREusername='user'ADNpassword='pwd123'由于用户名和密码都是字符串,SQL注入方法即把参数携带的数据变成mysql中注释的字符串。mysql中有2种注释的方法:1)'#':'#'后所有的字符串都会被当成注释来处理用户名输入:user'#(单引号闭合user左边的单引号),密码随意输入,如:111,然后点击提交按钮。等价于SQL语句:
SELECT*FROMuserWHEREusername='user'#'ADNpassword='111''#'后面都被注释掉了,相当于:
SELECT*FROMuserWHEREusername='user'2)'--'(--后面有个空格):'--'后面的字符串都会被当成注释来处理用户名输入:user'--(注意--后面有个空格,单引号闭合user左边的单引号),密码随意输入,如:111,然后点击提交按钮。等价于SQL语句:
SELECT*FROMuserWHEREusername='user'--'ANDpassword='111'SELECT*FROMuserWHEREusername='user'--'ANDpassword='1111''--'后面都被注释掉了,相当于:
写cookie:functionsetCookie(name,value){varDays=30;varexp=newDate();exp.setTime(exp.getTime()+Days*24*60*60*1000);document.cookie=name+"="+escape(value)+";expires="+exp.toGMTString();}读取cookie:
functiongetCookie(name){vararr,reg=newRegExp("(^|)"+name+"=([^;]*)(;|$)");if(arr=document.cookie.match(reg))returnunescape(arr[2]);elsereturnnull;}删除cookie:
functiondelCookie(name){varexp=newDate();exp.setTime(exp.getTime()-1);varcval=getCookie(name);if(cval!=null)document.cookie=name+"="+cval+";expires="+exp.toGMTString();}JQuery操作JQuery非常流行,所以网上大量各种文档,不在详细说明菜鸟教程网友教程w3c教程简单选择器举例代码:(页面中所有p标签内容单击即会消失)$(document).ready(function(){$("p").click(function(){$(this).hide();});});Ajax请求(同步、异步区别)随机数禁止缓存