首页 > 代码库 > 20161021_一些基础的东西
20161021_一些基础的东西
1. mysql_num_fields() 返回结果集中字段的数目 如: $result = mysql_query("SELECT id,name,age FROM mydb、tb1 where id < 5"); echo mysql_num_fields($result);
//result:3 (id,name,age)三个字段
2. $a = 9; $b = &%a; unset($b); $b = 1; echo $a; //$a = 9
//解释如下,这属于传递赋值
变量相当于一个容器,变量名则引用着容器中的变量。
unset()函数是切断变量名对容器的引用连接,并不是清空容器中变量的值。
ps:只要容器中的变量还被某个变量名引用,那么该变量就不会被垃圾回收。
3. $str = "LAMP"; $str1 = "LAMPBrother"; $strc = strcmp($str,$str1); switch ($strc){ case 1: echo "str > str1"; break; case –1: echo "str < str1"; break; case 0: echo "str=str1"; break; default: echo "str <> str1"; } //strcmp()函数比较两个字符串大小.
$str1 == $str2时,返回0;
$str1 < $str2时,返回负数;(1 * 多出来的字符数量)
$str1 > $str2时,返回正数;(-1 * 多出来的字符数量)
LAMP 比 LAMPBrother 少了 7 个字符,所以$str < $str1
则strcmp()的返回值为 -1*7 = -7
则echo 为 str <> str1。
4. <?php if ($a<10){ if($b>11){ if($c==10&& $d != $c) { $x=0; }else { $x=1; } } } ?> A. $x = ($a < 10 || $b > 11 || $c == 10 && $d !=$c ) ? 0 : 1; B. $x = (($a < 10 && $b > 11) || ($c == 10&& $d !=$c ) ) ? 0 : 1; C. $x = ($a < 10 && $b > 11 && $c == 10 && $d !=$c ) ? 0 : 1; D. 以上都不是 答案:D //在以上的if判断语句中,若 $a>10,则直接跳出循环,$x 不会存在有值的情况 //而三元运算符则会使得 $x 存在值
5. <?php class A{ public function __construct(){ echo "Class A...<br/>"; } } class B extends A{ public function __construct(){ echo "Class B...<br/>"; } } new B(); ?>
输出结果: Class B... //子类继承了父类,子类的构造方法会覆盖父类的构造方法。
6. Final关键字 如果父类中的方法被声明为final,则子类无法覆盖该方法; 如果一个类被声明为final,则不能被继承; Note:属性不能被定义为 final,只有类和方法才能被定义为 final。
7. <?php class A{ public static $num=0; public function __construct(){ self::$num++; } } new A(); new A(); new A(); echo A::$num; ?> 输出结果:3 //static修饰的静态变量会常驻内存
8.php抽象类 PHP中抽象类使用abstract关键字定义. 没有方法体的方法叫抽象方法,包含抽象方法的类必须是抽象类。 抽象类不能实例化,也就是不可以new成对象。 抽象类可以是个空类,也就是不一定需要有抽象方法。但抽象方法只能存在抽象类中。
9.
__call()函数是php类的默认魔法函数,__call() 在一个对象的上下文中,如果调用的方法不存在的时候,它将被触发:
__call()该方法在调用的方法不存在时会自动调用,程序仍会继续执行下去。
__call() 方法用于监视错误的方法调用
<?php class MethodTest { public function __call($name, $arguments) { // Note: value of $name is case sensitive. echo "Calling object method ‘$name‘ " . implode($arguments). "\n"; } } $obj = new MethodTest; $obj->runTest(‘in object context‘); 运行结果: Calling object method ‘runTest‘ in object context
10. 如果在PHP中使用Oracle数据库作为数据库服务器,应该在PDO中加载下面哪个驱动程序? A. PDO_DBLIB [无] B. PDO_MYSQL [MySQL Functions (PDO_MYSQL) ] C. PDO_OCI [Oracle Functions (PDO_OCI) ] D. PDO_ODBC [unixODBC and ibm-DB2 Functions (PDO_ODBC) ]
11. PDO一共提供了3种不同的错误处理模式 PDO::ERRMODE_SILENT; //不报错误 PDO::ERRMODE_WARNING;//以警告的方式报错 PDO::ERRMODE_EXCEPTION;//以异常的方式报错
12. PDO通过执行SQL查询与数据库进行交互,可以分为多种不同的策略,使用哪一种方法取决于你要做什么操作。
如果向数据库发送DML语句,下面哪种方式最合适? 使用PDO对象中的exec()方法 使用PDO对象中的query()方法 使用PDO对象中的prepare()和PDOStatement对象中的execute()两个方法结合 答案:以上方式都可以 //有用户输入数据的时候更偏向于用C,防止sql注入 //PDO->exec() 方法主要是针对没有结果集合返回的操作,比如 INSERT、UPDATE、
DELETE 等操作,它返回的结果是当前操作影响的列数,这里select用query比较合适。 //DML(data manipulation language): 它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用
来对数据库里的数据进行操作的语言 //DDL(data definition language): DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义
或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用 //DCL(Data Control Language): 是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括
(grant,deny,revoke等)语句。在默认状态下,只有
sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL
13.
MySQL目前只有InnoDB和BDB两个数据表类型才支持事务 MySQL是以自动提交(autocommit)模式运行的,必须执行mysqli对象中的autocommit(0)方法
关闭MySQL事务机制的自动提交模式 调用mysqli类对象的commit()方法提交事务 rollback是回滚事务,mysqli类对象的rollback_back()方法,
只是撤销从上一次提交commit()后对数据库的DML操作。并不会开启自动提交模式
20161021_一些基础的东西
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。