pear是纯php角本的扩展库~~
pecl是extension的扩展库~~
short_open_tag = Off // <? ?>打开,默认的是<?php ?> & <script language="php"></script>
asp_tags = Off // 打开asp tag <% %>
3中注释方式:
/*****/ --c
// --c++
# --shell
php变量是弱类型的,只能以字母和下划线开始,不能用数字开始哟。
变量没有全局的,全是本地的。
函数中定义的只能在函数中用,函数外的可以用特殊数组$GLOBALS['NAME']访问。
$a='index';$$a = 'value'equals $index = 'value';
isset($v1,$v2,$v3) //isset可以判断任意数量的参数是否被声明。
unset //取消定义,释放内存。
$_GET[]
$_POST[]
$_COOKIE[]
$_ENV[] --环境变量
$_SERVER[]
<<<A
A; //定义大段字符,结束必须顶格.
php5中,字符访问可以用中括号也可以用大括号,建议用大括号,以对数组区分。
foreach($arrs as &$arr){
// 可以直接处理数组
}
define('CONSTANTVALUE',$value); //定义常量。
$a=1; $b =& a; //a & b 就指向同一个内存地址了,i guess, 永久的。。
=== //值要等,类型也要等。
include($_SERVER['DOCUMENT_ROOT']."/myscript.php"); //所谓的相对路径。
require与include不同的地方是:include的文件不存在也继续执行,require会停止滴。
同理 include_once / require_once.
eval("echo $a = 5;") //输出5,厉害吧。js里貌似也有eval,功能类似。
静态属性属于类而不属于实例,属于类共有的都可以定义成静态属性,又叫做存储在类里面的全局变量。
self:: //指向当前类
parent:: //指向父类
instanceof 替代 is_a() // if($obj instanceof 类名)
__CLASS__ //存储当前类名的常量
ini_set() // set php.ini中的值
session_name() // 改变默认的 session ID 在 cookie 中的名字 PHP_SESSID
session_start() //必须紧跟在所有用ini_set()函数设置session相关的参数后面
mysqli_connect_error() // 从最后一次失败的连接中获取错误信息
<?php
for($i =0;$i < 10000; $i ++){
$str[] = '("tom","nan")';
}
$query = 'insert into test(name,sex) values '.implode(',',$str);
print_r($start = microtime());
echo '<br>';
$con = mysql_connect('localhost','root','root');
mysql_select_db('liftdna_db_new');
$result = mysql_query($query);
if($result){
print_r($end = microtime());
echo '<br>';
print_r($end-$start);
}else{
print_r(mysql_error());
}
mysql_close($con);
echo '<br>';
//mysqli
print_r($start = microtime());
echo '<br>';
$con = new mysqli('localhost','root','root','liftdna_db_new');
if($stmt = $con->prepare('insert into test(name,sex) values(?,?)')){
$stmt->bind_param("ss",$name,$sex);
for($j = 0; $j < 10000; $j ++){
$name = 'jack';
$sex = 'nv';
$stmt->execute();
}
$stmt->close();
}
$con->close();
print_r($end = microtime());
echo '<br>';
print_r($end-$start);
?>
//OUTPUT
0.27481600 1313923740
0.52492100 1313923740
0.250105
0.52511400 1313923740
0.85092500 1313923750
0.325811
include/require //包含的文件如果有错,返回不完整的文件,并继续执行
GPC // GET, POST, COOKIE
HTTP header发出之后,不能在试图修改。如果不用ob_start(),从html开始就输出了,header在此之前也输出了,再来改就出错。
output buffering 通过管道将所有输出添加到动态增加的缓存中,等脚本结束了再输出所有,包括header。但是会降低输出页面的速度。
session_id() //查看当前对话在cookie中的session id
register_globals = Off // 当 register_globals 打开以后,各种变量都被注入代码,例如来自 HTML 表单的请求变量。再加上 PHP 在使用变量之前是无需进行初始化的,这就使得更容易写出不安全的代码。
声明变量的同时要定义变量,是必须的好习惯。
<?php
// 当用户合法的时候,赋值 $authorized = true
if (authenticated_user()) {
$authorized = true;
}
// 由于并没有事先把 $authorized 初始化为 false,
// 当 register_globals 打开时,可能通过GET auth.php?authorized=1 来定义该变量值
// 所以任何人都可以绕过身份验证
if ($authorized) {
include "/highly/sensitive/data.php";
}
?>
magic_quotes_gpc = Off // Sets the magic_quotes state for GPC (Get/Post/Cookie) operations. When magic_quotes are on, all ' (single-quote), " (double quote), \ (backslash) and NUL's are escaped with a backslash automatically.
global //
<?php
$a = 1;
$b = 2;
function Sum()
{
global $a, $b;
$b = $a + $b;
}
Sum();
echo $b;
?>
<?php
$a = 1;
$b = 2;
function Sum()
{
$GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}
Sum();
echo $b;
?>
addslash() // addslashes() 的例子是当你要往数据库中输入数据时。例如,将名字 O'reilly 插入到数据库中,这就需要对其进行转义。大多数据库使用 \ 作为转义符: O\'reilly。这样可以将数据放入数据库中,而不会插入额外的 \.
array explode ( string $separator , string $string [, int $limit ] )
string implode ( string $glue , array $pieces )
array preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] )
string chunk_split ( string $body [, int $chunklen [, string $end ]] )
mixed count_chars ( string $string [, int $mode ] )
int fprintf (resource$handle ,string$format [,mixed$args [,mixed$... ]] )
string htmlentities (string$string [,int$flags = ENT_COMPAT [,string$charset [,bool$double_encode = true ]]] )
string html_entity_decode (string$string [,int$quote_style = ENT_COMPAT [,string$charset = 'UTF-8' ]] )
string htmlspecialchars (string$string [,int$flags = ENT_COMPAT [,string$charset [,bool$double_encode = true ]]] )
string htmlspecialchars_decode (string$string [,int$quote_style = ENT_COMPAT ] )
1xx:信息响应类,表示接收到请求并且继续处理
2xx:处理成功响应类,表示动作被成功接收、理解和接受
3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理
4xx:客户端错误,客户请求包含语法错误或者是不能正确执行
5xx:服务端错误,服务器不能正确执行一个正确的请求
http0.9/1.0 不支持连接复用,Http1.1支持。这个复用只是可以复用连接,不是说请求和响应也能保持住,别搞混了。
int readfile (string$filename [,bool$use_include_path [,resource$context ]] )
读入一个文件并写入到输出缓冲。
返回从文件中读入的字节数。如果出错返回 FALSE 并且除非是以 @readfile() 形式调用,否则会显示错误信息。
string basename (string$path [,string$suffix ] )
给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名。如果文件名是以 suffix 结束的,那这一部分也会被去掉。
在 Windows 中,斜线(/)和反斜线(\)都可以用作目录分隔符。在其它环境下是斜线(/)。
$path = "/home/httpd/html/index.php";
$file = basename($path); // $file is set to "index.php"
$file = basename($path,".php"); // $file is set to "index"
string dirname (string$path )
给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名。
在 Windows 中,斜线(/)和反斜线(\)都可以用作目录分隔符。在其它环境下是斜线(/)。
$path = "/etc/passwd";
$file = dirname($path); // $file is set to "/etc"
mixedpathinfo (string$path [, int$options ] )
pathinfo() 返回一个关联数组包含有path 的信息。包括以下的数组单元:dirname,basename 和extension。
可以通过参数 options 指定要返回哪些单元。它们包括:PATHINFO_DIRNAME,PATHINFO_BASENAME 和PATHINFO_EXTENSION。默认是返回全部的单元。如果不是要求取得所有单元,则本函数返回字符串。
$path_parts = pathinfo("/www/htdocs/index.html");
echo $path_parts["dirname"] . "\n";
echo $path_parts["basename"] . "\n";
echo $path_parts["extension"] . "\n";
/www/htdocs index.html html
string realpath (string$path )
realpath — 返回规范化的绝对路径名
Please be aware that this function does NOT always strip a trailing slash!:
LINUX (tested with PHP 5.2.11):
---
realpath('.')
: string = "/myhttpdfolder"
realpath('./')
: string = "/myhttpdfolder"
realpath('fileadmin')
: string = "/myhttpdfolder/fileadmin"
realpath('fileadmin/')
: string = "/myhttpdfolder/fileadmin"
WINDOWS (tested with PHP 5.2.5):
---
realpath('.')
: string = "C:\\myhttpdfolder"
realpath('./')
: string = "C:\\myhttpdfolder\\"
realpath('fileadmin')
: string = "C:\\myhttpdfolder\\fileadmin"
realpath('fileadmin/')
: string = "C:\\myhttpdfolder\\fileadmin\\"
array parse_url ( string$url )
本函数解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组成部分。
本函数不是用来验证给定 URL 的合法性的,只是将其分解为下面列出的部分。不完整的 URL 也被接受,parse_url() 会尝试尽量正确地将其解析。
$ar = parse_url('http://www.google.com.cn?x=1111&y=2222222');
print_r($ar);
Array( [scheme] => http [host] => www.google.com.cn [query] => x=1111&y=2222222)
voidparse_str (string$str [, array&$arr ] )
$var1 = 1;
parse_str('var1=one&var2=two');
// $var1 is now 'one'
parse_str('var1=one&var2=two',$arr);
//$arr = array('var1'=>one,'var2'=>two);
SET FOREIGN_KEY_CHECKS = 0;
ALTER TABLE revenues ADD FOREIGN KEY fk_revenues_tags1(tag_id) REFERENCES tags (id) ON DELETE NO ACTION ON UPDATE NO ACTION;
DROP TABLE IF EXISTS user_workgroups;
CREATE TABLE IF NOT EXISTS user_workgroups (
id INT(11) NOT NULL AUTO_INCREMENT ,
user_id INT(11) NULL DEFAULT NULL ,
workgroup_id INT(11) NULL DEFAULT NULL ,
role ENUM('ADMIN','DATA','QA') NULL DEFAULT NULL ,
PRIMARY KEY (id) ,
INDEX fk_user_workgroups_workgroups1 (workgroup_id ASC) ,
INDEX fk_user_workgroups_users1 (user_id ASC) ,
CONSTRAINT fk_user_workgroups_workgroups1
FOREIGN KEY (`workgroup_id` )
REFERENCES `workgroups` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT fk_user_workgroups_users1
FOREIGN KEY (`user_id` )
REFERENCES `users` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION
mixed array_pop ( array&$array )
array_pop() 弹出并返回 array 数组的最后一个单元,并将数和依次调用fopen(),fwrite() 以及fclose() 功能一样。 组array 的长度减一。如果array 为空(或者不是数组)将返回NULL。
$HTTP_RAW_POST_DATA — 原生POST数据
$HTTP_RAW_POST_DATA 包含 POST 提交的原始数据
file_put_contents — 将一个字符串写入文件
int file_put_contents ( string$filename , string$data [, int$flags [, resource$context ]] )和依次调用 fopen(),fwrite() 以及fclose() 功能一样。
但是如果有大量的读写,需要用单独的fopen,fwrite,fclose,不能用file_put_contents,代价太高,耗时。
数据库index-索引是表的目录,经常查询的字段可以建立索引。
数据库view-视图是表的一部分,用于给特定的用户显示特定的部分。