专栏首页若是烟花三日php之路 -- 第二,三天(php知识要点)

三日php之路 -- 第二,三天(php知识要点)

一、基础

(1)数组

// 数组的创建
$arr = array("apple", "banana"); 
$arr = array("f1"=>"apple", "f2"=>"banana"); 
// 在php5.4之后 可以使用 
$arr = [1,2,3];
 
// 对于数组的遍历
$arr_len = count($arr); // 需要注意数组的下标!!!
// 类似 python 的 for key,value in arr: print key,"=>",value;   
foreach($arr as $key=>$value){ 
    echo $key . "=>" . $value; 
}

二、表单处理

(1)数据提交方式一般为GET或POST。

(2)表单涉及HTML基本知识。

// action.php

if ($_SERVR["REQUEST_METHOD"] == "POST"){ 
    $name = str_input($_POST["name"]); 
}  
 
function str_input($data){
    // 数据验证处理...  
}
// 定义变量并设置为空值
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST"){
    if (empty($_POST["name"])){
        $nameErr = "Name is required!";
    }else{
        $name = test_input($_POST["name"]);
    }
}
// 表单数据验证,使用 正则表达式

...

三、高级教程

(1)多维数组

// 多维数组创建
$arr = [[1,2,3], [2,3,4]];

// 多为数组的引用
$arr[0][0]

(2)时间和日期

// 设置默认时区
date_default_timezone_set("Asia/Shanghai");
// 获取时间
date("Y/m/d h:m:s");

(3)include

// 使用include 引入某个文件,当文件不存在时,脚本会继续执行。
// 当使用 require ,找不到文件时,require语句会返回严重错误,脚本停止执行。

(4)文件

php拥有多个函数可以创建,读取,上传和编辑文件。请谨慎操作文件

<?php
$file = fopen("dic.txt", "r") or die("Unable to open file.");
echo fread($file, filesize("dic.txt"));
fclose($file);


// 读取文件的一行,文件的指针会指向下一行
// fgets($file);

// 如果没有 end of file, fgetc() 会将指针移动到下一个字符
while(!feof($file)){
    echo fgetc($file);
}

// 文件的写入
$text = "文本内容";
fwrite($file, $text);


// 文件上传
// ... ...

(5)Cookies

// cookie 常用于用户识别。cookie是服务器留在用户计算机上的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送cookie。

// 创建cookie, 使用 setcookie()。 必须放在 <html> 标签前面
setcookie(key, value, exprie, path, domain);
setcookie("user", "root", time()+3600);

// 取回cookie
$_COOKIE["user"];
for($_COOKIE as $key=>$value){}
// 判断是否已经设置 cookie 
isset($_COOKIE["user"]);

// 删除cookie
setcookie("user", "", time()-3600);

(6)Session

// session 变量用于存储有关用户会话的信息,或更改用户会话的设置。 Session变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用。
// Session的工作机制是:为每个访问者创建唯一的UID,并基于这个UID来存储变量。UID在cookie中,或url来进行传导。

// 启动会话,开启session。需要放在 <html> 标签前面
session_start();

// session 存储变量
$_SESSION["views"] = 1;

// session 变量的读取
$_SESSION["views"];

if(isset($_SESSION["views"])){
    $_SESSION["views"] = $_SESSION["views"] + 1;
} else {
    $_SESSION["views"] = 1;
}
echo "views is " . $_SESSION["views"];

// session 的删除
unset($_SESSION["views"]);
// 或
session_destory();

(7)E-mail

(8)Error

在创建脚本和web应用程序时,错误处理是一个重要的部分。

// 不同的错误处理方法

// 基本的错误处理,使用 die() 函数 
if(!file_exists("welcome.txt")){
    die("File not found.");
} else {
    $file = fopen("welcome.txt", "r");
}

// 创建自定义错误处理器
error_function(error_level, error_message, error_file, error_line, error_context)// error_level, error_message 必选

// 触发错误
trigger_error();

(9)Exception

异常(Exception)用于在指定的错误发生时改变脚本的正常流程。

// ...

(10)Filter

过滤器用于验证和过滤来自非安全来源的数据。

验证和过滤用户输入或自定义数据时任何web应用程序的重要组成部分。

// 什么是外部数据
// ①来自表单的输入数据 ②Cookies ③服务器变量 ④数据库查询结果


$int = "asd";
if(filter_var($int, FILTER_VALIDATE_INT)){
    echo "数字";
} else {
    echo "非数字";
}

四、MySQL数据库

(1)数据库连接

$con = mysqli_connect(servername, username, password);
if(!$con){
    die("数据库连接失败!");
}
// 一定不要忘记关闭连接资源
mysqli_close($con);

(2)创建数据库

// CREATE DATABASE database_name;

$sql = "CREATE DATABASE my_db";
if(mysqli_query($sql, $con)){
    echo "数据库创建成功";
} else {
    echo "数据库创建失败:" . mysqli_error();
}
mysqli_close($con);

(3)创建数据库表

<?php
// 创建数据库连接
$con = mysqli_connect("localhost", "root", "");
if(!$con){
    echo "";
}
// 创建数据库
if(mysqli_query("CREATE DATABASE my_db", $con)){
    echo "";
} else {
    echo "" . mysqli_error;
}
// 选择数据库
// 对于数据库的选择,当然可以使用 “select * from my_db.person”
mysqli_select_db("my_db", $con);
// 创建sql语句
$sql = "CREATE TABLE Person
(
FirstName varchar(15),
LastName varchar(15),
Age int
)";
// 执行sql
mysqli_query($sql, $con);
// 关闭数据库连接
mysqli_close($con);
?>

一个比较完整点的例子:

$con = mysqli_connect("localhost", "root", "944898186");
if(!$con){
    die("数据库连接失败!\n");
} else {
    echo "数据库连接成功!\n";
}
//if(mysqli_query($con, "CREATE DATABASE my_db")){
//    echo "数据库创建成功!\n";
//} else {
//    echo "数据库创建失败!\n";
//}
mysqli_select_db($con, "my_db");
//$sql = "CREATE TABLE Persons
//(
//personID INT NOT NULL AUTO_INCREMENT,
//PRIMARY KEY (personID),
//FirstName VARCHAR (15),
//LastName VARCHAR (15),
//Age INT
//)";
//$sql = "INSERT INTO Persons (FirstName, LastName, Age)
//VALUES ('Peter', 'Griffin', '35')";
//$sql = "INSERT INTO Persons (FirstName, LastName, Age)
//VALUES ('Glenn', 'Quagmire', '33')";
$sql = "SELECT * FROM Persons";
$results = mysqli_query($con, $sql);

while($row = mysqli_fetch_array($results)){
    echo $row["FirstName"]."=>".$row["LastName"]."\n";
}

mysqli_close($con);

(4)ODBC

ODBC是一种应用程序编程接口(Application Programming Interface,API),使我们有能力连接到某个数据源。

// 连接到 ODBC
odbc_connect() //函数用于连接到ODBC数据源。四个参数:数据源名称,用户名,密码,可选的指针类型参数
odbc_exec() //函数用于执行SQL语句
odbc_fetch_row() //从结果集中返回记录
odbc_close() // 关闭ODBC连接

五、XML

xml用于数据的描述。XML文件描述了数据结构。在xml中没有预定义标签,需要定义自己的标签。

// DOM 解析

// SimpleXML PHP5中的新特性

<?php
$xml = simplexml_load_file("text.xml");
echo $xml->getName() . "<br>";
foreach($xml->children() as $child){
    echo $child->getName() . ":" . $child . "<br>";
}
?>

六、AJAX

AJAX = Asynchronous JavaScript And XML(异步 JavaScript 及 XML)

AJAX是一种技术,可以创建更好、更快且交互性更强的web应用程序。AJAX使用JavaScript在web浏览器和web服务器之间发送和接收数据。

var XMLHttp = null
if (window.XMLHttpRequest){
    XMLHttp = new XMLHttpRequest()
}
else if (window.ActiveXObject){
    XMLHttp = new ActiveXObject("Microsoft.XMLHTTP")
}

// 还是研究 JQuery 的 AJAX 吧 ... ...
// AJAX只是提供异步的请求,服务器端的数据处理基本没什么变化 ... ...

七、其他

PHP基本内容算是差不多了吧。剩下的就是看下PHP常见框架,以及再熟悉下 regx,json,xpath ....

下面研究下 JQuery 啥的吧...

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spring MVC 学习

    lpe234
  • GCC编译静态库及动态库

    lpe234
  • Laravel框架学习 -- 安装

    Laravel 利用 Composer(Composer 中文)来管理其自身的依赖包。

    lpe234
  • linux 文件比较

    葫芦
  • 「R」MacOS 安装 R4.0

    前往 https://mirrors.tuna.tsinghua.edu.cn/CRAN/ 下载新的版本,鼠标点击安装。

    王诗翔呀
  • Keep面经汇总

    原理:泛型的实现是靠类型擦除技术,类型擦除是在编译期完成的,在编译期,编译器会将泛型的类型参数都擦除成它的限定类型,如果没有则擦除为object类型之后在获取的...

    武培轩
  • nio使用中的java.nio.file.FileSystemNotFoundException分析析

    开发架构二三事
  • 1083 Cantor表

    题目描述 Description 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的: 1/1 1/2 ...

    attack
  • LeetCode动画 | 218.天际线问题

    今天分享一个LeetCode题,题号是218,标题是天际线问题,题目标签是线段树和Line Sweep [ 扫描线算法 ] ,题目难度是困难。最近新学了Go语言...

    我脱下短袖
  • HPU第二次积分赛

    已知: $$Fibonacci[i]== \begin{cases} i& \text{x<=1}\ Fibonacci[i−1]+Fibonacci[i−2]...

    某些人

扫码关注云+社区

领取腾讯云代金券