《
PHP与MySQL.WEB开发》:
PHP标记风格:、 ?>:遵循SGML、:JavaScript方式、<% %>:默认禁用,使用asp_tags选项可以开启。
PHP注释风格:/* */:C风格、//:C++风格、#:Shell风格。
PHP输出风格:" "、' '、<<<任意标签 任意标签。
PHP标记符法:变量区别大小写、方法不区分大小写。
PHP设置变量:isset()判断是否存在、unset()重置、reset()重新设置到开始处。
PHP变量作用域:
常量:全局可见包括函数内外。
静态变量:函数内申明后限函数内可见多次执行过程将保留该值。
全局变量: 内部超级全局变量脚本任意处可见($GLOBALS、$_SERVER、$_SESSION、$_GET、$_POST、$_REQUEST、$_FILES、$_ENV);
脚本申明全局变量限整个脚本不包括函数内部;
函数内部申明全局时名称要一致。
函数内部变量:对函数而言是本地的函数结束后就不存在了。
PHP执行操作符:``表达式的值是命令的执行结果(eg:$out=`ls -a`:Unix、$out=`dir c`:Windows)。
PHP类型执行符:instanceof(eg:$object instanceof ObjectClass)。
PHP实现\n转化
:nl2br函数,
PHP数组排序:sort()值排序下标为数字、asort()值排序下标任意、ksort()下标排序限一维、usort()和uasort()与uksort()用户定义的排序函数、shuffle()、array_reverse任意与反向。
PHP统计数组值出现次数:array_count_value()。
PHP除掉空格函数:trim()、ltrim()、rtrim()。
PHP输出函数说明:echo与printf一样,是语言结构无返回值,printf即返回值又可以带参数(eg:printf("it's %.2f",$price)以%开始)、printf_f区别echo另一种递归打印输出方式效率低。
PHP字符转换:strtoupper()转大写、strtolower()转小写、Ucfirst()首字母转大写、Ucwords()字母每个单词转大写。
PHP字符分隔:explode(值,分隔标识)返回一个数组、strtok(值,分隔标识)吸取第一个值。
PHP字符串比较:strcmp()比较两个字符串是否相等区分大小写、strcasecmp()比较不分大小写、strnatcmp()自然排序比较(12大于2)。
PHP字符串查找:strstr()对大小写敏感、strchr()两者类似、stristr()函数查找字符串在另一个字符串中第一次出现的位置,对大小写不敏感。
PHP字符串查找位置:strpos()第一次出现、strrpos()最后一次出现位置,查找字符串时PHP手册建议使用strpos实现。
PHP字符串查找替换:str_replace()、substr_replace()查找给定位置进行替换。
PHP正则查找字符串:ereg()、eregi()不区分大小写。
PHP正则查找并替换:ereg_replace()、eregi_replace()不区分大小写。
PHP正则分割字符串:splite('\.|@',
[email protected])将分成五个部分。
PHP 加入页眉页脚另类方法:auto_prepend_file与auto_append_file,也可设置.htaccess文件php_value auto_prepend_file "../header.inc"|auto_append_file "../footer.inc"。
数据库的优势(RDBS关系数据库):
比普通文件的数据访问速度更快;
更容易查询并提取满足特定条件的数据;
具有专门的内置机制处理并发访问问题;
可以提供对数据的随机访问;
具有内置的权限系统。
MySQL子查询:
基本子查询:select * from table1 where col1=(select * from table2);
子查询和操作符:ANY、IN、SOME、ALL;
关联子查询:EXISTS、NOT EXISTS;
行子查询:select c1,c2,c3 from t1 where (c1,c2,d3) in (select c1,c2,c3 from t2);
子查询作临时表:from后使用子查询;
更新、修改、删除数据库记录:
更新:update table set col=exp,... where condition order by col limit number,后面也可加条件,不加为所有;
修 改表:alter table customers modify name char(70) not null、aleter table orders add tax foloat(6,2) after amounts、alter table orders drop tax;
删除记录:delete from customers where costomerid=5、drop database test。
数据库过虑:get_magic_quotes_gpc()判断是否已经自动完成了引号、addslashes|stripslashes添加|去除斜线来相应处理数据。
建立连接:new mysqli(local,user,pass,db)面向对象返回对象、mysqli_connect(local,user,pass,db)过程方式连接返回资源。
断开连接:$resule->free()、mysqli_free_result($result)或$db=>close()、mysqli_close($db)。
连接量配置:MySQL在my.ini文件中配置max_connections决定同时连接个数,Apache在httpd.conf文件中设置MaxClients来通过服务器拒绝新的连接请求。
Prepared语句:mysqli函数库支持prepared语句的使用,基本思想是可以向MySQl发送一个需要执行的查询模板,然后单独发送数据($q="insert into book value(?,?);
$s=$db->prepared($q);$s->bind_param('','$isbn');$s->execute();echo $s->affected_rows;$s->close();")。
MySQL权限知识:
MySQL数据库中的mysql表存储了所有用户等的相关权限,所保存信息的5个表:user、host、db、tables_priv、columns_priv;
describe user:浏览该表的结构,查看权限详细。
更新权限:flush privileges、操作系统中mysqladmin flush-privileges|mysqladmin reload。
注意事项:不要将process观察其他用户在做什么、file读写操作系统文件、shutdown、reload等权限授予任何非管理员用户。
权限转移:一个人的权限可以分配给另一个人。
Web问题:授予select、insert权限,不给予drop、alter、create。
查看权限:show grants for 表。
查询操作过程:explain table、describe table、show columns from table。
EXPLAIN知识:
查询语句末尾加\G选项解决表行宽度太大以垂直模式显示结果。
查看MySQL是如何来解释并执行一个select查询,在语句前加explain即可。
查询时间过长、语句过于复杂可以使用explain语句提前检查它。
数据库优化:
设计优化:少用varchar、text、blog、null。
权限:权限尽量少。
表 的优化:表随着更新和删除操作,数据支离破碎使用方法:optimize table tab|myisamchk -r table|myisamchk --sort-index --sort-records=1 pathtomysqldatadirectory/*/*.MYI。
使用索引:简化索引,不创建查询时不使用的索引,运行前使用explain命令检查访索引是否正在使用中。
使用默认值。
数据库备份恢复:
备份:
复制文件:确认表在被锁定中,表类型是READ或WRITE,执行之前执行FLUSH TABLES命令确保索引所做的任何修改将备份写入到磁盘。
使用命令:mysqldump --opt --all-databases > all.sql,备份所有数据库到all.sql文件中。
使用脚本:mysqlhotcopy database /path/for/backup,使用后启动和停止数据库的操作,备份的最后一个方法是维护数据库的一个拷贝。
恢复:
第一种方法备份的,可以将数据库文件重新复制到mysql的相同位置。
经二种方法备份的必须在导出文件中运行查询,接着还应该将数据库更新保存到二进制日志文件中的状态:mysqlbinlog hostname-bin,[0-9]*|mysql。