zoukankan      html  css  js  c++  java
  • PHP基础知识总结(三) 流程控制、函数、类对象和数据库

    PHP基础语法

    1、流程控制

      条件语句:if  elseif  else / switch

    if($a == 1){
    
       ……
    
    } elseif ($a == 2){
    
       ……
    
    }  else{
    
       ……
    
    }

           循环语句:for  foreach

    for ($i = 1; $i <= 10; $i++) {
        echo $i;
    }
    
    foreach($arr as $key => $value){   //一维数组循环键和值
      ……      
    }
    
    foreach($arr as $key => $value){     //二维数组循环键和值
         foreach($value as $value2){        //可以在循环中直接取值
            ……
         }        
    }

     2、函数:

          一次写成,反复调用。

       定义用function:

    function foo($arg_1, $arg_2, /* ..., */ $arg_n)
    {
        echo "Example function.
    ";
        return $retval;
    }

            foo($a1,$a2,……,$an);      //在php中,名称() ==>函数

            有很多内置函数,比如var_dump()

       局部变量:函数内定义的变量

            全局变量:函数外定义的变量

    3、类与对象

      类是图纸,对象是照着图纸盖出来的房子。

      面向对象的方法:是为了更大规模的协作。

    <?php
    
    class name{
        public $a1 = 0;
        public $a2 = 1;
    
        public function __construct(){  //魔术方法,不带参数的构造函数,自己会执行,可以不写。
            //初始值
        }
    
        public function s1(){
            $this -> s2();             //用$this来调用兄弟姐妹
        }
    
        public function s2(){
            echo $this -> a1;
        }
    }
    
    $name = new name();               //类实例化
    echo $name -> a2 . "<br/>";      //调用类属性,"->"是指向运算符,后面属性不用$符号
    $name -> s2();                    //调用类方法
    
    
    class name2{
        public $a1 = 0;
        public $a2 = 1;
    
        public function __construct($a, $b){   //带参数的构造函数
            $this->a1 = $a;
            $this->a2 = $b;
        }
    
        public function s1(){
            $this -> s2();
        }
    
        public function s2(){
            echo $this -> a1;
        }
    }
    
    /**/
    $name2 = new name2('a', 'b');
    echo "<br/>" ;
    $name2 -> s1();
    
    ?>

           魔术方法,有__construct(构造函数)、__destruct(析构函数)等。PHP 将所有以 __(两个下划线)开头的类方法保留为魔术方法。

    4、包含文件

      一个项目中有很多个php文件,一个php文件要引用另外的php文件中内容,要用到“包含文件”。

      include:包含并运行指定文件

           include_once:只包含一次

        require / require_once

    5、数据库

      SQL语法可以通过菜鸟教程学习:http://www.runoob.com/mysql/mysql-tutorial.html

        使用Mysqli API来处理数据库的添删改查:mysqli::query,   mysqli_result::fetch_array等。

          添加数据到表中的例子:

    <?php
    
    $host = "127.0.0.1";
    $user = "root";
    $passwd = "zst@123";
    $dbname = "php10";    //数据库名称
    //连接数据库
    $db = new mysqli($host, $user, $passwd, $dbname);   
    //判断连接是否成功
    if($db->connect_errno <> 0){
        echo "连接数据库失败,";
        echo $db->connect_error;
    }
    
    //执行sql
    $sql = "insert into msg(content2, intime, user) values('留言',123,'php')";
    $a = $db->query($sql);
    //执行是否成功
    if($a == true){
        echo "执行成功";
    }else{
        echo "执行失败";
    }
    //var_dump($db);
    
    ?>

          查询表中的数据到页面上显示的例子:

    <?php
        
    $host = "127.0.0.1";
    $user = "root";
    $pwd = "zst@123";
    $dbname = "php10";
    $db = new mysqli($host, $user, $pwd, $dbname);
    if($db->errno <> 0){
        echo "数据库连接失败";
        exit;
    }
    $sql = "select * from msg where id>15 order by id desc";
    $mysqli_result = $db->query($sql);
    if($mysqli_result == false){
        echo "查询语句执行失败";
        exit;
    }
    
    $rows = [];
    while($row = $mysqli_result->fetch_array(MYSQLI_ASSOC)){
        $rows[] = $row;
    }
    //var_dump($rows);
    
    ?>
    <html>
        <head>
            <meta charset="UTF-8"/>
            <title>留言本</title>
            <!--<link rel="stylesheet" type="text/css" href="test.css"> -->
            <style type="text/css">
                .wrap{
                    width: 800px;
                    margin: 0px auto;
                }
                .add{
                    overflow:hidden;   <!--消除float-->
                }
                .add .content{
                    width: 798px;
                    margin: 0px;
                    padding: 0px;
                }
                .add .user{
                    float: left;
                }
                .add .btn{
                    float: right;
                }
                .msg{
                    margin: 20px 0px; 
                    background: #ccc;
                    padding: 5px;
                }
                .msg .info{
                    overflow: hidden;
                }
                .msg .user{
                    float:left;
                    color: blue;
                }
                .msg .time{
                    float: right;
                    color:999;
                }
                .msg .content{
                    width: 100%;
                }
    
            </style>
        </head>
        <body>
            <div class="wrap">
                <!--发表留言-->
                <div class="add">
                    <form action="messageboard_class.php" method="post">
                        <textarea name="content" class="content" cols="50" rows="5"></textarea>
                        <br/>
                        <input name="user" class="user" type="text"/>
                        <input class="btn" type="submit" value="发表留言"/>
                    </form>
                </div>
                <!--查看留言 -->
                <?php
                    //设置日期时区,否则会少7小时
                    date_default_timezone_set("Asia/Shanghai");
                    foreach ($rows as $key => $record) {
                            
                ?>
                <div class="msg">
                    <div class="info">
                        <span class="user"><?php echo $record["user"]; ?></span>
                        <span class="time"><?php echo date('Y-m-d H:i:s', $record["intime"]); ?></span>
                    </div>    
                    <div class="content">
                        <?php echo $record["content"]; ?>
                    </div>
                </div>
                <?php
                    }
                ?>
            </div>
        </body>
    </html>
  • 相关阅读:
    POJ 1321:棋盘问题
    POJ 2251:Dungeon Master
    POJ 3438:Look and Say
    POJ 1094:Sorting It All Out拓扑排序之我在这里挖了一个大大的坑
    杭电1285--确定比赛名次(拓扑排序)
    南阳67--三角形面积
    南阳38--布线问题
    杭电1050--Moving Tables(区间覆盖)
    杭电1217--Arbitrage(Spfa)
    杭电1719--Friend(找规律)
  • 原文地址:https://www.cnblogs.com/wangle1001986/p/8643289.html
Copyright © 2011-2022 走看看