PHP:世界上最好的语言(手动狗头)

mac2022-06-30  24

文章目录

资源Hello World!打开报错提示基本语法数据类型简介echo和printEOFBooleanIntegerFloatString类型比较常量数组超级全局变量函数魔术常量表单PHP连接MySQLMySQL建库建表向表中插入数据一个注册页面的示例

资源

PHP官方文档 菜鸟教程

Hello World!

测试服务器环境

<?php echo 'Hello World'; ?>

打开报错提示

找不到php.ini的话可以查看phpinfo

<?php phpinfo(); ?>

访问后在页面中找Loaded Configuration File 即php.ini的路径 然后参照此博客 写个代码测试一下

<?php echo $a; ?>

访问时会报Undefined variable

注意:生产环境下千万不要开报错提示!!!

基本语法

1.起始和结束标记

起始 <?php 结束 ?>

php解析器识别两标记之间的代码作出解析

2.注释 单行注释 // 或# 多行注释 /* */ 注意:多行注释时遇到第一个 */ 就会结束,这可能导致错误

数据类型简介

四种标量类型:

boolean(布尔型) integer(整型) float(浮点型,也称作 double) string(字符串)

三种复合类型:

array(数组) object(对象) callable(可调用)

两种特殊类型:

resource(资源) NULL(无类型)

类型查看函数:gettype($变量名) 类型和值查看函数:var_dump($变量名) 类型检验函数:is_type($变量名) 使用时具体为is_string()、is_int()、is_bool()等

echo和print

echo可以输出一个或多个字符串,没有返回值

<?php echo "this","is","a","test"; ?>

输出结果

print输出一个字符串,返回值为1

EOF

作用:按照原格式输出其内部的所有内容

结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)。

开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,会解释内嵌的变量和转义符号 带单引号则不解释内嵌的变量和转义符号。

<?php $a=<<<EOF <h1>我的第一个标题</h1> <p>我的第一个段落。</p> EOF; // 结束需要独立一行且前后不能空格 echo $a; ?>

运行结果

Boolean

<?php $foo = True; // 设置 $foo 为 True,不区分大小写 ?>

Integer

<?php $a = 1234; // 十进制数 $a = -123; // 负数 $a = 0123; // 八进制数 (等于十进制 83) $a = 0x1A; // 十六进制数 (等于十进制 26) $a = 0b11111111; // 二进制数字 (等于十进制 255) ?>

Float

<?php $a = 1.234; $b = 1.2e3; $c = 7E-10; ?>

String

一个字符串 string 就是由一系列的字符组成,其中每个字符等同于一个字节。这意味着 PHP 只能支持 256 的字符集,因此不支持 Unicode

<?php echo 'this is a simple string'; // 可以录入多行 echo 'You can also have embedded newlines in strings this way as it is okay to do'; // 输出: Arnold once said: "I'll be back" echo 'Arnold once said: "I\'ll be back"'; // 输出: You deleted C:\*.*? echo 'You deleted C:\\*.*?'; // 输出: You deleted C:\*.*? echo 'You deleted C:\*.*?'; // 输出: This will not expand: \n a newline echo 'This will not expand: \n a newline'; // 输出: Variables do not $expand $either echo 'Variables do not $expand $either'; ?>

单引号定义法 表达单引号或反斜线时需要在前面加 \ 进行转义 不对其中的变量名作解析

<?php $a="hello"; echo '$a'; //输出$a而不是$a的值hello ?>

双引号定义法 会对其中的变量名作解析

<?php $a='hello'; echo "this will print $a"; //输出 this will print hello ?>

双引号中的单引号只是单纯的单引号,仍会对变量名作解析

<?php $a = "1"; $var = "this is a test about'$a'"; echo $var; ?>

字符串长度strlen($变量名)

<?php $a="hello"; echo strlen($a); //输出5 ?>

字符串拼接运算符 .

<?php $txt1="Hello world!"; $txt2="What a nice day!"; echo $txt1 . " " . $txt2; ?>

字符串查找strpos(字符串,被查找字符串),如果找到就返回第一个匹配字符的下标索引

<?php echo strpos("Hello world!","world"); //返回 6 ?>

类型比较

== 只比较值不比较类型 === 既比较值也比较类型

常量

define(“常量名”,常量值)

<?php // 区分大小写的常量名 define("GREETING", "欢迎访问 Runoob.com"); echo GREETING; // 输出 "欢迎访问 Runoob.com" echo '<br>'; echo greeting; // 输出 "greeting" ?>

数组

使用array()函数创建数组 使用count($数组名)获取数组长度

<?php $MyArray=array("a","b","c"); echo $MyArray[2]; //显示 c echo count($MyArray); //显示 3 ?>

超级全局变量

$GLOBALS $_SERVER $_REQUEST $_POST $_GET $_FILES $_ENV $_COOKIE $_SESSION

函数

<?php function PrintHW($name){ echo $name."Hello World"; return 1; } PrintHW("jack"); ?>

魔术常量

PHP的命名还真是因吹斯听,一会超级一会魔术的

_LINE_ _FILE_ _FUNCTION_ _DIR_ 等等等等

表单

1. $_GET变量 用于收集来自GET方法的键值对 使用$_GET[键名]获取值

示例 用GET方法提交键值对的GETTest.html

<html> <head> <meta charset="utf-8"> <title></title> </head> <body> <form action="GETTest.php" method="get"> 名字: <input type="text" name="fname"> 年龄: <input type="text" name="age"> <input type="submit" value="提交"> </form> </body> </html>

接收键值对的GETTest.php

欢迎 <?php echo $_GET["fname"]; ?>!<br> 你的年龄是 <?php echo $_GET["age"]; ?> 岁。

访问GETTest.html,输入信息,点击提交 URL栏变为 F12查看 响应页面 2. $_POST变量 用于收集来自GET方法的键值对 使用$_POST[键名]获取值

示例 POSTTest.html

<html> <head> <meta charset="utf-8"> <title></title> </head> <body> <form action="POSTTest.php" method="post"> 名字: <input type="text" name="fname"> 年龄: <input type="text" name="age"> <input type="submit" value="提交"> </form> </body> </html>

POSTTest.php

欢迎 <?php echo $_POST["fname"]; ?>!<br> 你的年龄是 <?php echo $_POST["age"]; ?> 岁。

访问POSTTest.html,输入信息,点击提交 URL变为POSTTest.php,但其后没有参数 F12查看 响应页面 3. $_REQUEST变量 预定义的 $_REQUEST 变量包含了 $_GET、$_POST 和 $_COOKIE 的内容 也就是说上面的两个php文件中的$_GET和$_POST可以全部用$_REQUEST替代,效果一样

PHP连接MySQL

首先用phpinfo()检查一下有没有安装MySQLi 面向对象的连接方式

<?php $servername = "localhost"; $username = "username"; $password = "password"; // 创建连接 $conn = new mysqli($servername, $username, $password); // 检测连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } echo "连接成功"; ?>

面向过程的连接方式

<?php $servername = "localhost"; $username = "username"; $password = "password"; // 创建连接 $conn = mysqli_connect($servername, $username, $password); // 检测连接 if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } echo "连接成功"; ?>

连接在脚本执行完后会自动关闭 或者你可以使用以下代码手动关闭

$conn->close(); //面向对象 mysqli_close($conn); //面向过程

我比较喜欢面向对象,所以以下省略掉面向过程的方式

MySQL建库建表

我偏好使用MySQL的shell 不作详解 假设已创建好数据库phptest和其中的表userpass

向表中插入数据

<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "phptest"; // 创建连接 $conn = new mysqli($servername, $username, $password, $dbname); // 检测连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } $sql = "INSERT INTO userpass (username,password) VALUES ('John', '123qwerty')"; if ($conn->query($sql) === TRUE) { echo "新记录插入成功"; } else { echo "Error: " . $sql . "<br>" . $conn->error; } $conn->close(); ?>

访问此php文件后再进入MySQL检查一下

一个注册页面的示例

regist.html

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Regist Page</title> </head> <body> <form action="regist.php" method="post"> <label for="username">用户名:</label><input type="text" id="username" name="yonghuming"> //向服务器提交的是name:value键值对 <label for="pass">密码:</label><input type="text" id="pass" name="mima"> <input type="submit" id="btn" value="注册"> //在页面上显示的文字是“注册” </form> </body> </html>

regist.php

<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "phptest"; $name=$_REQUEST["yonghuming"]; $pass=$_REQUEST["mima"]; //接收传入的键值对 // 创建连接 $conn = new mysqli($servername, $username, $password, $dbname); // 检测连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } $sql = "INSERT INTO userpass (username,password) VALUES ('$name','$pass')"; if ($conn->query($sql) === TRUE) { echo "新记录插入成功"; } else { echo "Error: " . $sql . "<br>" . $conn->error; } $conn->close(); ?>

访问regist.html,输入信息,注册 查看MySQL

最新回复(0)