1. <!–?php…?–>
2. <!–?…?–>
3. <script language=”php”>…</script>
变量以$开头
注释//…;/*…*/;#…
PHP 支持八种原始类型。
四种标量类型:
布尔型(boolean)
整型(integer)
浮点型(float)(浮点数,也作“double”)
字符串(string)
两种复合类型:
数组(array)
对象(object)
最后是两种特殊类型:
资源(resource)
NULL
为了确保代码的易读性,本手册还介绍了一些伪类型:
混和(mixed)
数字(number)
回馈(callback)
表达方式用于调试,用gettype()
表达式的值和类型,用var_dump()
强制转换或者 settype() 函数
函数 intval() 来将一个值转换成整型,获取变量的整数值
round() 函数对浮点数进行四舍五入
当转换为 boolean 时,以下值被认为是 FALSE:
布尔值 FALSE
整型值 0(零)
浮点型值 0.0(零)
空白字符串和字符串 “0”
没有成员变量的数组
没有单元的对象
特殊类型NULL(包括尚未设定的变量)
所有其它值都被认为是 TRUE(包括任何资源)。
字符串可以用三种字面上的方法定义。
单引号 双引号 定界符 定界符语法“<<<” gettype(),is_array(),is_float(),is_int(),is_object() 和 is_string() 常量define(“CONSTANT”, “Hello world.”); PHP 提供了一些流程控制的替代语法,包括 if,while,for,foreach 和 switch。替代语法的基本形式是把左花括号({)换成冒号(:),把右花括号(})分别换成 endif;,endwhile;,endfor;,endforeach; 以及 endswitch;。 —————————– 1.嵌入方法<!–? ?–> <!–?php ?–>
2.引用文件
require(“”) 在程序执行前就引入文件 成为网页的一部分
include(“”) 只在使用到的时候读入文件
require_once(“”) 只引用一次
include_once(“”)
3.注释方法
//……
/*……*/
#……
4.变量类型
变量以$开头
语句以php结尾
1、注意不要漏了分号
2、注意不要漏了变量前的$
3、使用SESSION的时候注意不要遗漏session_start();
5.运算符号
+、-、*、/、%、++、–
字符串连接 用”.” 例$a.$b
6.输出语句
echo 或 <!–?=变量?–>
7.逻辑运算
<、>、<=、>=、==、!=、&&、and、||、or、xor、!
8.流程控制
a.if……else
if (expr) {statement} 判断相等用==
if (expr) {statement1} else {statement2}
if () {} elseif () {} else {}
b.for (expr1;expr2;expr3) {}
c.switch() {case expr1:statement1;break;case expr2:statement2;break;default:statementN;break;}
9.数据库连接
(1)打开 MySQL 服务器连接
int mysql_connect(string [hostname] [:port], string [username], string [password]); 返回值: 整数
(2)选择一个数据库
int mysql_select_db(string database_name, int [link_identifier]); 返回值: 整数
成功返回 true,失败则返回 false。
(3)将连接关掉可以节省资源
mysql_close()
(4)int mysql_query(string query, int [link_identifier]); 返回值: 整数
本函数送出 query 字符串供 MySQL 做相关的处理或者执行。若没有指定link_identifier 参数,则程序会自动寻找最近打开的 ID。当 query 查询字符串是 UPDATE、INSERT 及 DELETE 时,返回的可能是 true 或者 false;查询的字符串是 SELECT 则返回新的 ID 值,当返回 false 时,并不是执行成功但无返回值,而是查询的字符串有错误。
(5)mysql_fetch_object 返回类资料。 语法: object mysql_fetch_object(int result, int [result_typ]); 返回值: 类
本函数用来将查询结果 result 拆到类变量中。若 result 没有资料,则返回 false 值。
<!–?
$exec=”select * from user”;
$result=mysql_query($exec);
while($rs=mysql_fetch_object($result))
{
echo “username:”.$rs—>username.”
“;
}
?>
添加:$exec=”insert into tablename (item1,item2) values (‘”.$_POST[‘item1’].”‘,”.$_POST[‘item1’].”)”;
删除:$exec=”delete from tablename where…”;
修改:$exec=”update tablename set item1='”.$_POST[‘item1’].”‘ where …”;
$_POST[‘item1’]得到变量值,同样以GET提交的就是$_GET[‘item1’]
10.在页面开始我们要session_start();开启SESSION;
然后就可以使用SESSION变量了,比如说要赋值就是:$_SESSION[‘item’]=”item1″;要得到值就是$item1=$_SESSION[‘item’];,
比如说判断是不是某SESSION变量为空,可以这么写:empty($_SESSION[‘inum’])返回true or false。
11.分页
对于$page如果没有我们就让它=0,如果有<0就让它也=0,如果超过了总的页数就让他=总的页数。 $execc=”select count(*) from tablename “; $resultc=mysql_query($execc); $rsc=mysql_fetch_array($resultc); $num=$rsc[0]; 这样可以得到记录总数 ceil($num/10))如果一页10记录的话,这个就是总的页数 所以可以这么写 if(empty($_GET[‘page’])) { $page=0; } else { $page=$_GET[‘page’]; if($page<0)$page=0; if($page>=ceil($num/10))$page=ceil($num/10)-1;//因为page是从0开始的,所以要-1
}
这样$exec可以这么写 $exec=”select * from tablename limit “.($page*10).”,10″;
//一页是10记录的
最后我们需要做的就是几个连接:
<a href=”xxx.php?page=0″>FirstPage</a>
<a href=”xxx.php?page=<?=($page-1)?>”>PrevPage</a>
<a href=”xxx.php?page=<?=($page+1)?>”>NextPage</a>
<a href=”xxx.php?page=<?=ceil($num/10)-1?>”>LastPage</a>
12上传文件表单必须加上 enctype=”multipart/form-data” 和 <input name=”file” type=”file” />
下面看一下代码:
$f=&$HTTP_POST_FILES[‘file’];
$dest_dir=’uploads’;//设定上传目录
$dest=$dest_dir.’/’.date(“ymd”).”_”.$f[‘name’];//我这里设置文件名为日期加上文件名避免重复
$r=move_uploaded_file($f[‘tmp_name’],$dest);
chmod($dest, 0755);//设定上传的文件的属性
上传的文件名为date(“ymd”).”_”.$f[‘name’] ,可以在以后插入到数据库的时候用到,PHP实际上是把你上传的文件从临时目录移动到指定目录。move_uploaded_file($f[‘tmp_name’],$dest);这是关键
至于发邮件就更加简单,可以使用mail()函数
mail(“收件人地址”,”主题”,”正文”,”From:发件人\r\nReply-to:发件人的地址”);
不过mail()需要服务器的支持,在WINDOWS下还需要配置SMTP服务器,一般来说外面的LINUX空间都行。
【1】页面之间无法传递变量 get,post,session在最新的php版本中自动全局变量是关闭的,所以要从上一页面取得提交过来得变量要使用$_GET[‘foo’],$_POST[‘foo’],$_SESSION[‘foo’]来得到
【2】Win32下apache2 用get方法传递中文参数会出错
test.php?a=你好&b=你也好
传递参数是会导致一个内部错误
解决办法:”test.php?a=”.urlencode(你好).”&b=”.urlencode(你也好)
【3】win32下的session不能正常工作
php.ini默认的session.save_path = /tmp
这显然是linux下的配置,win32下php无法读写session文件导致session无法使用
把它改成一个绝对路径就可以了,例如session.save_path = c:\windows\temp
【4】显示错误信息
当php.ini的display_errors = On并且error_reporting = E_ALL时,将显示所有的错误和提示,调试的时候最好打开以便纠错,如果你用以前php写法错误信息多半是关于未定义变量的。变量在赋值以前调用会有提示,解决办法是探测或者屏蔽
例如显示$foo,可以if(isset($foo)) echo $foo 或者echo @$foo
【5】Win32下mail()不能发送电子邮件
在linux下配置好的sendmail可以发送,在win32下需要调用smtp服务器来发送电子邮件
修改php.ini的SMTP = ip //ip是不带验证功能的smtp服务器(网上很难找到)
php发送邮件的最好解决方法是用socket直接发送到对方email服务器而不用转发服务器
【6】初装的mysql如果没有设置密码,应该使用
update mysql.user set password=”yourpassword” where user=”root”
修改密码
【7】header already sent
这个错误通常会在你使用HEADER的时候出现,他可能是几种原因:1,你在使用HEADER前PRING或者ECHO了2.你当前文件前面有空行3.你可能INCLUDE了一个文件,该文件尾部有空行或者输出也会出现这种错误。!
【8】更改php.ini后没有变化
重新启动web server,比如IIS,Apache等等,然后才会应用最新的设置
【9】php在2003上面安装(ISAPI的安装方法恳请高手指教)
PHP4的php4isapi.dll好像和2003有些冲突,只能用CGI模式安装
步骤一,先[url]www.php.net[/url]下在一个安装程序,我是装的是:php-4.2.3-installer.exe,你也可以去找最新的版本,在安装php-4.2.3-installer.exe之前保证你的IIS6.0启动了,并能够访问。 安装好以后,在默认网站–>应用程序配置
步骤二:点击 web服务扩展 –>新建web服务扩展.
步骤三: 扩展名–>php,然后添加
步骤四:找到php.exe的路径添加上去。
步骤五: 确定就可以了!
步骤六: 选择php的服务扩展,然后点击允许。
【10】有时候sql语句不起作用,对数据库操作失败
最简便的调试方法,echo那句sql,看看变量的值能得到不
【11】include和require的区别
两者没有太大的区别,如果要包含的文件不存在,include提示notice,然后继续执行下面的语句,require提示致命错误并且退出
据我测试,win32平台下它们都是先包含后执行,所以被包含文件里最好不要再有include或require语句,这样会造成目录混乱。或许lunix下情况不同,暂时还没测试
如果一个文件不想被包含多次可以使用include_once或require_once## 读取,写入文档数据
function r($file_name) {
$filenum=@fopen($file_name,”r”);
@flock($filenum,LOCK_SH);
$file_data=@fread($filenum,filesize($file_name));
@fclose($filenum);
return $file_data;
}
function w($file_name,$data,$method=”w”){
$filenum=@fopen($file_name,$method);
flock($filenum,LOCK_EX);
$file_data=fwrite($filenum,$data);
fclose($filenum);
return $file_data;
}
【12】isset()和empty()的区别
两者都是测试变量用的
但是isset()是测试变量是否被赋值,而empty()是测试一个已经被赋值的变量是否为空
如果一个变量没被赋值就引用在php里是被允许的,但会有notice提示
如果一个变量被赋空值,$foo=””或者$foo=0或者 $foo=false,那么empty($foo)返回真,isset($foo)也返回真,就是说赋空值不会注销一个变量。
要注销一个变量,可以用 unset($foo)或者$foo=NULL
【13】mysql查询语句包含有关键字
php查询mysql的时候,有时候mysql表名或者列名会有关键字
这时候查询会有错误。例如表名是order,查询时候会出错
简单的办法是sql语句里表名或者列名加上[tab键上面]来加以区别
order`
例如select * from
【14】通过HTTP协议一次上传多个文件的方法
有两个思路,是同一个方法的两种实现。具体程序还需自己去设计
1,在form中设置多个文件输入框,用数组命名他们的名字,如下:
<form action=”” method=”post”><input name=”usefile[]” type=”file” />
<input name=”usefile[]” type=”file” />
<input name=”usefile[]” type=”file” /></form>这样,在服务器端做以下测试
echo ”
<pre>”;
print_r($_FILES);
echo “</pre>
“;
1,在form中设置多个文件输入框,但名字不同,如下:
<form action=”” method=”post”><input name=”usefile_a” type=”file” />
<input name=”usefile_b” type=”file” />
<input name=”usefile_c” type=”file” /></form>在服务器端做同样测试:
echo ”
<pre>”;
print_r($_FILES);
echo “</pre>
“;
图片显示
你的php.ini 中的extension=php_gd2.dll 前面的分号去了吗
如下是PHP中调用setcookie()函数设定cookie的例子:
int setcookie(string name,string value,int expire,string path,string domain,int secure)
<!–?php
setcookie(“user”,”wind”,time()+3600,”/php/”,”http://www.oso.com.cn”);
?–>其中,user为该cookie的名称;wind为该cookie的值;time()+3600为该cookie的有效时间;/php/为该cookie的相关路径;[url]http://www.oso.com.cn[/url]为该cookie的网站。
其实,我们除了使用这种方式设定cookie外,还可使用header()函数如:header(“Set-Cookie:user=wind”)
如上面所设的cookie返回后,会形成一个$user变量,其值为wind
设置一个Session,名为user,值为wind
<!–?php
session_start();
$user=”wind”;
session_register(“user”);
?–>
读Session,显示结果为“欢迎你!wind”
?br> <!–?php
session_start();
echo “欢迎你!$user”;
?–>
mail(收信人,主题,内容,邮件文件头);
文件:email.html
<h2 align=”center”>网管收信</h2>
<hr />
<center>
<form action=”mail.php”>发件人:<input name=”from” size=”25″ type=”text” />
主题:<input name=”subject” size=”20″ type=”text” />
内容:
<textarea cols=”80″ name=”content” rows=”15″>你好,站长:</textarea>
<input type=”submit” value=”寄出” /> <input type=”reset” value=”重写” /></form>
文件:mail.php
<!–?php
if (empty($from) or empty($subject) or empty($content)) {echo “没有完成填写,请<a href=”email.html”–>返回”;}
$body=”[主题] $subjectn”;
$body.=”[发件人] $fromn”;
$body.=$content;
$deal=mail(“webmaster@163.com”,$subject,$body,”From:$from”);
if ($deal) {echo “寄件成功!”;}else{echo “寄件失败!!!”;}
?>
_FILE_为本文件的文件名,_LINE_为执行行所在的行号
$GLOBAL[“message”]; global $message;
PHP变量的类型分为:整数(int)、双精度型(double)、字符串(string)、崐数组(array)、对象(object)
字符串,通常用””(双引号)表示。也可用”(单引号)表示,如下:
$a=”abc”; $b=”abc$a”; $c=’abc$a’; $d=”\”cde\””; $e='”cde”‘;
PHP中的各种变量均在变量名前加上“$”以示区别。
注意,$b的内容为abcabc,$c的内容为abc$a,$d的内容为”cde”,$e的内容也为”cde”。可以看出,双引号中的内容中的变量名会被替代崐,而单引号中的则不会。双引号中的内容需转义,如$应用\$表示,而单引号中的则不用。
PHP中的数组语法为: 数组名[索引]
索引可为数字,也可为文字。但不建议使用文字,因为意义不大。对于数组也比其它语言灵活如下例:
<!–?php
$names[]=100;
$names[]=200;
$names[]=”hi,how are you”;
$names[]=98.5;
$names[]=1.7E+23;
$num=count($names);
for ($i=0;$i<=$num;$i++){
echo “$names[$i]<br /–>”;
}
?>
.= 字符串指定运算符 $a.=”hello”
& 变量的指针(加在变量前)
-> 对象的方法或属性
=> 数组的元素值
?: 三元运算符
在一个变量前加一个“$”,就是把这个变量的内容作为了一个新的变量名
1 : //魔术常量
2 : __LINE__ //文件中的当前行号(包含注释行)
3 : __FILE__ //文件的完整路径和文件名
4 : __FUNCTION__ //当前所在的函数名称(PHP 4.3.0 新增)
5 : __CLASS__ //当前所在的类的名称( PHP 4.3.0 新增)
6 : __METHOD__ //当前所在的类的方法名( PHP 5.0.0 新增)
7 : //内核预定义常量
8 : PHP_VERSION //PHP版本信息和phpversion()结果相同
9 : PHP_OS //操作系统信息
一些典型的应用如下:
1: //操心系统类型判断
2: if (substr(PHP_OS, 0, 3) == ‘WIN’) {
3: define(‘OS_WINDOWS’, true);
4: } else {
5: define(‘OS_WINDOWS’, false);
6: }
1: //获取当前文件的文件名和路径
2: echo basename(__FILE__);
3: echo dirname(__FILE__);
</center>