程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP入門教程

PHP入門教程

編輯:PHP綜合
PHP語言在服務器是解釋執行的,就是說一個PHP文件(純文本)直接放在服務器上,PHP將他執行後輸出(一般來說結果是Html代碼)
   1、嵌入方法:
   類似ASP的<%,PHP可以是<?php或者是<?,結束符號是?>,所有的PHP代碼放在它們之中,之外的部分則會直接作為結果輸出    2、引用文件:
   引用文件的方法有兩種:require 及 include。
   require 的使用方法如 require("MyRequireFile.PHP");
   include 使用方法如 include("MyIncludeFile.PHP"); 它們之間的區別:
a)require是編譯之前就讀取目標文件,include是運行到這條語句的時候才讀取目標文件
b)require的目標文件如果無法讀取或者有語法錯誤會造成Fatal error(嚴重錯誤)導致運行中止
include的目標文件出錯會造成Warning級別的錯誤,程序繼續運行一般來說,屬於程序體通用代碼如函數、類定義、通用代碼等的使用require,屬於緩存等其他目的的用include TIP: 也可以用require_once 和 include_once,區別在於相同文件不會重復被包含
PHP的容錯處理:在語句前加@即可屏蔽該語句的出錯信息,另外參閱手冊error_reporting函數
   3、注釋方法:
  •    <?PHP
  •    echo "這是第一種例子。\n" ; // 本例是 C++ 語法的注釋
  •    /* 本例采用多行的
  •    注釋方式 */
  •    echo "這是第二種例子。\n" ;
  •    echo "這是第三種例子。\n" ; # 本例使用 UNIX Shell 語法注釋 ?> 復制代碼

    4、變量類型:
       $mystring = "我是字符串" ;
       $NewLine = "換行了\n" ;
       $int1 = 38 ;
       $float1 = 1.732 ;
       $float2 = 1.4E+2 ;
       $MyArray1 = array( "子" , "丑" , "寅" , "卯" );
       這裡引出兩個問題,首先PHP變量以$開頭,第二PHP語句以;結尾
    數組問題另述    5、運算符號:    +   加法運算      *   乘法運算      %   取余數      --   遞減      運算符號只有一個,就是英文的句號。它可以將字符串連接起來,變成合並的新字符串
       <?
       $a = "PHP" ;
       $b = "功能強大" ;
       echo $a.$b;
       ?>
       這裡也引出兩個問題,首先PHP中輸出語句是echo,第二類似ASP中的<%=變量%>,PHP中也可以<?=變量? >。    符號 意義  
       <   小於  
       >   大於  
       <=   小於或等於  
       >=   大於或等於      !=   不等於  
       &&   而且 (And)  
       and   而且 (And)  
       ||   或者 (Or)  
       or   或者 (Or)  
       xor   異或 (Xor)  
       !   不 (Not)   參閱:手冊運算符部分

    嗯,上面的部分是網上找的再抄抄改改的,下面開始YC了 6、流程控制、語法
    if
    switch
    for
    while
    do ... while ...
    continue
    break 以上同C 函數聲明
    function function_name($argument1, $argument2 = 'default') { } 類聲明
    class student extends human {
    var $stu_no;
    function study() { }
    } foreach($array as $key => $value) 循環體;
    foreach($array as $value) 循環體;
    對數組進行遍歷

    7、數組
    PHP的數組其實類似哈希表或字典,可以用字符串做所應
    初始化時可以用=>指定索引和值

  • $array = array(
  •    'key1' => 'value1',
  •    'key2' => 'value2'
  • ); 復制代碼

    常用數組相關函數 請參考手冊
    explode   implode
    in_array count 8、字符串
    PHP的字符串的重要特性是雙引號中的字符串會被解析,例子↓

  • $v = '[i am v]';
  • $a = array('key'=>'[value]');
  • $aa = array('key2' => $a);
  • echo "$v\n$a[key]\n{$a['key']}\n$aa[key2][key]\n{$aa[key2][key]}"; 復制代碼

    就是雙引號的字符串會自動尋找其中變量進行替換,為了防止歧義可以用花括弧包含變量名,例子將會輸出如下內容

    [i am v]
    [value]
    [value]
    Array[key]
    [value]

    字符串常用函數
    substr   strlen
    str_replace strstr preg_match preg_match_all
    preg_replace 9.數 intval ceil
    abs   mt_rand
    max min 10.文件處理
    PHP支持經典的fopen等系列語句,但也有更簡單直接的file_put_contents和file_get_contents處理文件
    另外在服務器配置允許的情況下文件處理的路徑都可以寫http://xxxxxxxxxxx fopen file_get_contents file_put_contents
    file_exists filemtime
    move_uploaded_file 11.輸出相關(額……好像有點太後面了,想到哪裡寫到哪裡……)
    嗯,前面已經出現過很多的echo就是輸出語句(其實不是個函數) print_r   var_dump
    另外要在PHP代碼中輸出還可以直接用<? ?>,例如

  • <?PHP
  • if(sth is true) {
  •    ?> TRUE <?
  • } else {
  •    ?> FALSE<?
  • }
  • ?> 復制代碼

    另外輸出可以使用緩存(一般的作用是把輸出攔截成變量繼續處理或者儲存下來) ob_start ob_end_clean ob_get_contents 12.輸入相關
    接受到的POST、GET、CookIE請求分別存放於
    $_POST   $_GET   $_COOKIE $_FILES
    中,可以用print_r自己實驗一下

  • <? print_r($_POSTS); ?><form method="post">xxxxxxxx</form> 復制代碼

    13.系統變量、超級全局變量
    嗯,提到了$_POST眾,那麼講一下常用的幾個系統變量 $_SESSION 存放PHP session數據,參考手冊 session_start
    $_SERVER 存放服務器等相關的信息,可以print_r實際看一下
    $_ENV 存放環境相關信息以及
    $GLOBALS
    這個系統變量就涉及PHP的全局變量局部變量的問題了
    PHP默認所有的變量都是Global的也就是可以通過$GLOBALS這個數組訪問到,但函數內部無法直接用$var_name的方式訪問到外部的全局變量,直接用$var_name的話訪問到的是函數內部的局部變量
    在函數內部引用外部的全局變量有2種方式 global $var_name;
    $var_name = xxxxx;
    另一種是使用系統變量$GLOBALS
    $GLOBALS['var_name'] = xxxxx; 能在函數內部無需聲明直接訪問到外部的變量(超級全局變量)一共有九個
    $GLOBALS
    $_SERVER
    $_GET
    $_POST
    $_FILES
    $_COOKIE
    $_SESSION
    $_REQUEST
    $_ENV
    其中唯一沒介紹的$_REQUEST其實就是$_GET $_POST 和 $_COOKIE的合體

    14.數據庫
    PHP 使用My_SQL數據庫,當然也支持ODBC方式等各種形式的其他數據庫,但My_SQL是結合最緊使用最方便的關於連接、使用數據庫,我就簡單貼上Discuz的類的源代碼大家看看就好(其實一般來說照抄這部分沒什麼問題) 跳過此文件的源碼 http://10.48.13.111/bbs/vIEwthread.PHP?tid=4&page=1#pid52

  • <?PHP
  • /*
  • [Discuz!] (C)2001-2009 Comsenz Inc.
  • This is NOT a freeware, use is subject to license terms
  • $Id: db_MySQL.class.PHP 16688 2008-11-14 06:41:07Z cnteacher $
  • */
  • if(!defined('IN_DISCUZ')) {//是否定義過IN_DISCUZ,參閱手冊 define 這裡的用處是確認這個腳本是被DIscuz的其他腳本所require或include 的
  • exit('Access DenIEd');//exit語句輸出傳進去的內容以後就會中止PHP文件的運行
  • }
  • class dbstuff {//類定義,因為這個類比較簡單,所以沒什麼好說的,所有成員默認均為public
  • var $version = '';
  • var $querynum = 0;
  • var $link = null;
  • function connect($dbhost, $dbuser, $dbpw, $dbname = '', $pconnect = 0, $halt = TRUE, $dbcharset2 = '') {
  • $func = empty($pconnect) ? 'mysql_connect' : 'MySQL_pconnect';
  • if(!$this->link = @$func($dbhost, $dbuser, $dbpw, 1)) {
  • /*@的作用是屏蔽出錯信息,$func(xxxx)是動態函數調用的意思,如果$func的內容是mysql_connect,這裡就相當於MySQL_connect(xxxxxxxxx)
  • 順帶說一下變量也可以這樣動態調用
  • $a = 'content';
  • $v = 'a';
  • echo $$v;
  • 會輸出『content』
  • */
  • $halt && $this->halt('Can not connect to MySQL Server');//相當於if語句,這個其實C裡面也可以這麼干的
  • } else {
  • if($this->version() > '4.1') {//這段是字符集處理,看看就好
  • global $charset, $dbcharset;
  • $dbcharset = $dbcharset2 ? $dbcharset2 : $dbcharset;
  • $dbcharset = !$dbcharset && in_array(strtolower($charset), array('gbk', 'big5', 'utf-8')) ? str_replace('-', '', $charset) : $dbcharset;
  • $serverset = $dbcharset ? 'character_set_connection='.$dbcharset.', character_set_results='.$dbcharset.', character_set_clIEnt=binary' : '';
  • $serverset .= $this->version() > '5.0.1' ? ((empty($serverset) ? '' : ',').'sql_mode=\'\'') : '';
  • $serverset && MySQL_query("SET $serverset", $this->link);
  • }
  • $dbname && @MySQL_select_db($dbname, $this->link);
  • }
  • }
  • function select_db($dbname) {
  • return MySQL_select_db($dbname, $this->link);
  • }
  • function fetch_array($query, $result_type = MySQL_ASSOC) {
  • return MySQL_fetch_array($query, $result_type);
  • }
  • function fetch_first($sql) {
  • return $this->fetch_array($this->query($sql));
  • }
  • function result_first($sql) {
  • return $this->result($this->query($sql), 0);
  • }
  • function query($sql, $type = '') {//執行查詢
  • global $debug, $discuz_starttime, $sqldebug, $sqlspenttimes;
  • if(defined('SYS_DEBUG') && SYS_DEBUG) {//開發時才用的Debug……選擇性無視即可
  • @include_once DISCUZ_ROOT.'./include/debug.func.PHP';
  • sqldebug($sql);
  • }
  • $func = $type == 'UNBUFFERED' && @function_exists('MySQL_unbuffered_query') ?
  • 'mysql_unbuffered_query' : 'MySQL_query';
  • if(!($query = $func($sql, $this->link))) {//嘗試執行查詢,如果失敗,那麼進行下面的失敗處理
  • if(in_array($this->errno(), array(2006, 2013)) && substr($type, 0, 5) != 'RETRY') {//重試
  • $this->close();
  • require DISCUZ_ROOT.'./config.inc.PHP';
  • $this->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect, true, $dbcharset);
  • $this->query($sql, 'RETRY'.$type);
  • } elseif($type != 'SILENT' && substr($type, 5) != 'SILENT') {
  • $this->halt('MySQL Query Error', $sql);
  • }
  • }
  • $this->querynum++;//記錄本次腳本運行的查詢總次數
  • return $query;
  • }
  • function affected_rows() {
  • return MySQL_affected_rows($this->link);
  • }
  • function error() {
  • return (($this->link) ? mysql_error($this->link) : MySQL_error());
  • }
  • function errno() {
  • return intval(($this->link) ? mysql_errno($this->link) : MySQL_errno());
  • }
  • function result($query, $row = 0) {
  • $query = @MySQL_result($query, $row);
  • return $query;
  • }
  • function num_rows($query) {
  • $query = MySQL_num_rows($query);
  • return $query;
  • }
  • function num_fIElds($query) {
  • return MySQL_num_fIElds($query);
  • }
  • function free_result($query) {
  • return MySQL_free_result($query);
  • }
  • function insert_id() {
  • return ($id = MySQL_insert_id($this->link)) >= 0 ? $id : $this->result($this->query("SELECT last_insert_id()"), 0);
  • }
  • function fetch_row($query) {
  • $query = MySQL_fetch_row($query);
  • return $query;
  • }
  • function fetch_fIElds($query) {
  • return MySQL_fetch_fIEld($query);
  • }
  • function version() {
  • if(empty($this->version)) {
  • $this->version = MySQL_get_server_info($this->link);
  • }
  • return $this->version;
  • }
  • function close() {
  • return MySQL_close($this->link);
  • }
  • function halt($message = '', $sql = '') {//SQL錯誤信息輸出
  • define('CACHE_FORBIDDEN', TRUE);
  • require_once DISCUZ_ROOT.'./include/db_MySQL_error.inc.PHP';
  • }
  • }
  • ?>

    復制代碼

    關於SQL數據庫,一般可以使用phpMyAdmin進行管理、導入導出等日常操作,phpMyAdmin是使用最廣泛的管理MySQL用的PHP開源程序 MySQL基本支持常用的SQL語言,參閱 Google: MySQL教程

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved