简介:动态脚本语言,在服务器上执行,可包含文本、HTML、JavaScript和PHP代码,返回纯HTML形式。
语法
在文档中任意位置,以<?php开始,以?>结束,扩展名为.php,
PHP文件通常包含HTML标签和PHP脚本,如:
<!DOCTYPE html>
<html>
<body>
<?php
echo "hello world";
print "hello world" //print和echo都可输出语句,最后一行可不加分号
var_dump() //打印数据类型
?>
</body>
</html>
变量
形式:$+名称(字母或下划线开头,不能空格,区分大小写)
数据类型
字符串:$x = "hello world"
整型:$x = 0x8c
浮点型:$x = 2.4e3
布尔型:TRUE FALSE
数组:$x = array("a","b","c");
循环:
while(条件){ 循环体; } do { 循环体; } while(条件);
函数
<? php function add($x,$y){ $total = $x+$y; return $total; }
登录表单
前端:
<html> <title></title> <body> <form action="login.php" method="post"> 用户名:<input type="text" name ="id"> 密 码:<input type="password" name="pwd"> <input type="submit" value="登录"> </form> 用户名 </body> </html>
后端:
<?php $name = $POST['id']; $passwpord = $POST['pwd']; echo $name;
文件上传表单
前端index.html:
<html> <head> <title>1</title> </head> <body> <form action="welcome.php" method="POST" enctype="multipart/form-data"> 上传头像:<input type="file" name="filename"> <input type="submit" value="提交"> </form> </body> </html>
后端welcome.php:
<?php $name = $_FILE['fname']; var_dump($_FILE['fname']); //打印数据类型 echo $name; ?>
连接数据库
<?php $host = "127.0.0.1"; $username = "root"; $password = "123456"; $conn = mysql_connect($host,$username,$password); var_dump($conn); $sql = "show databases;"; $res = mysql_query($sql,$conn); $res = mysqli_query($conn,$sql) //注:mysqli时候$conn放置前方,musql时候参数放在后方 var_dump = $res; ?>
创建数据库表
$sql = "create table player(name varchar(200),age int(10),num int(10))"; mysql_query($sql,$conn);
插入字段
$sql = "insert into player(name,age,num) values('james',38,23)"; mysql_query($sql,$conn);
删除字段
$sql = "delete from player where name = '库名'"; mysql_query($sql,$conn);
查询
$sql = "select * from players"; musql_query($sql,&conn); //mysql_fetch_assoc():将查询的数据作为关联数组进行返回 //musql_num_rows():获取查询到的行数-整型
数据库相关概念
常用命令:
select * from players; //查询 select * from players where id = 1; //有条件查询 insert into player values(参数); //插入 update player set number=9 where id = "james"; //更新 delete from player where name = "james" //删除 区别: drop table 删除库删除表,完全删除 truncate table 删除表中的数据,不删除表 delete只删除指定数据 use TableName 进入某数据库 show tables 显示数据库表 show databases;显示数据库 select * from TableName order by id; 排序,默认升序 select * from TableName order by id desc; 排序,默认升序 select * from TableName order by 1; 后跟数字时表示第几个字段 select * from TableName where id = 1 union select * from TableName where id = 2; //联合查询,将查询结果集结合输出 select * from TableName where id = 9999 union select * from TableName where id = 2; //当第一个结果集为空,默认输出第二个结果集 select * from TableName where id = 1 union select username,password from TableName where id = 10; //报错,前后字段数应一致才能输出
常用注释符:
#
--空格
/* */
常用函数:
system_user():系统用户名
user():用户名
current_user():当前用户名
session_user():链接数据库的用户名
database():数据库名
version():mysql数据库版本
load_file():mysql读取本地文件的函数
@@datadir:数据库路径
@@basedir:安装路径
@@version_compile_os 操作系统
mysql5.0以上系统自带库:
information_schema:数据字典库,存储了其他数据库的元数据;元数据是关于数据的数据,也就是库名、表名、列名的数据类型、访问权限等。
mysql:核心数据库,存储用户的权限信息与帮助信息;
performance_schema:性能字典,此数据库为数据库性能优化提供重要的参考信息。
test:测试库。
information_schema库介绍
SQL注入最常利用的系统数据库,配合union联合查询来获取数据库相关信息(数据库名,所有表名,列名等),
其中主要关注三张表:SCHEMATA表(数据库信息),TABLES表(表信息)以及COLUMNS表(列信息)
SCHEMA表中,重点关注schema_name字段为所有数据库名
TABLES表中,重点关注table_schema字段和table_name字段
COLUMNS表中,重点关注table_schema,table_name,column_name字段名