PHP

语法

输出

echo
//输出数字或字符串
print_r()
/输出复杂数据类型
var_dump()
//输出变量详细信息

引入

include();
//引入其它文件
EG:include(‘index.php’);

require();
EG:require(‘index.php’);
//引入其它文件,其中include引入文件出错的时候会继续执行而require会终止

参数传递

在表单form的method中设置其以什么方式传递参数

GET参数传递

通过URL传递参数,参数值包含在URL中

print_r($_GET);
//打印GET传递过来的参数

POST参数传递

print_r($_POST);
//打印POST传递过来的参数

$user = $_POST[‘username’];
echo $user;
//将POST中的username参数传递给$user并打印

if(!empty($_POST)){
$usesr = $_POST[‘username’];
echo $user;
}
//判断是否传递过来了参数并打印出相应的参数值

数组

两类数组

先声明再赋值

<?php
$arr = array();
$arr[0] = ‘this’;
$arr[1]=’that’;
$arr[2]=’what‘;
?>

声明直接赋值

<?php
$arr = array(’who‘,’am’,’i’);
?>

关联数组

<?php
$arr = array(‘first’=>’who‘ , ’second’=>’am’ , ’third’=>’i’);
?>

数字数组

<?php
$arr = array(0=>’who‘,1=>’am’,2=>’i’);
?>

下标由数字组成,必须从0开始依次递增,中间如果有其它键值就是关联数组

foeach循环

<?php
$arr = array(0=>’who‘,1=>’am’,2=>’i’);
foreach($arr as $i=>%$v){
    echo $arr[$i];//通过下标访问元素,其中$i在数组中循环
    echo $v;//将其下标的值传递给了$v,输出其$v
}
?>

is_array()判断函数

<?php
$arr = array(0=>’who‘,1=>’am’,2=>’i’);
if(is_arry($arr)){
echo ‘OK’;
}
?>

用于判断是否为数组

in_array()判断函数

<?php
$arr = array(0=>’who‘,1=>’am’,2=>’i’);
if(in_arry(‘am’,$arr)){
echo ‘there be’;
}
else{
echo ‘no’;
}
?>

判断数组中是否存在某个值

文件上传

表单设置 enctype=”multipart/form-data”属性
获取上传文件信息,将文件保存到指定的文件夹

$_FILES数组

数组所包含的信息

Array(
(
    [name]=>picture.png
    [type]=>image/png
    [tmp_name]=>D:\wamp64\tmp\php324.tmp
    [error]=>0
    [size]=>5012
    )
)

[name]:原始文件名
[type]:文件类型
[tmp_name]:临时目录和目录中的文件名
[error]:错误
[size]:文件大小

move_uploaded_file()函数

move_uploaded_file($_FILES‘profile’,’picture.png’);
将上传的临时目录里面的文件保存到指定位置
$last = strrpos($_FILES[‘profile’],[‘name’],’.’);//获取”.”在字符串中的位置

连接数据库

SQL语句

1.关键词大写,如UPDATE
2.字段名称需要实际存在,需要数据表中实际存在的字段名称
3.若为非必填字段,可以为空也可以不写
4.字符串需要以引号包含,数字则不需要

INSERT

INSERT INTO ‘表名’(‘字段名-1’,’字段名-2’,’字段名-3’) VALUES(‘值-1’,’值-2’,’值-3’)

INSERT INTO `userinformation`(`userid`, `username`, `password`, `nickname`) VALUES ('3','Mic','202','TES')

image-20210808133700943

SELECT

SELECT ‘字段名’ FROM 表名 WHERE [条件]

SELECT `userid`, `username`, `password`, `nickname` FROM `userinformation` WHERE 'username' = 'Mia'
条件语句
语句说明示例
AND并列条件
OR或者条件
LIKE模糊查找SELECT * FROM ‘userinfomation’ LIKE ‘%ad%’
ODER BYASC升序排列
DESC降序排列
LIMIT限制条数

image-20210808135017929

UPDATE

更新之前一定要确保是否加了条件否则影响全部数据

UPDATE `userinformation` SET `password`='200' WHERE userid=0
//其中数字不需引号
UPDATE `userinformation` SET password=md5('200') WHERE username='Mia'
//MD5加密

image-20210808135140027

DELETE

DELETE FROM `userinformation` WHERE userid=4

image-20210808135212142

mysqli_connect()函数

mysqli_connect(‘localhost’,’root’,’webdatabase’);
//示例中数据库没有密码则无需输入密码
//输入参数说明mysqli_connect(‘地址’,’数据库用户名’,’数据库密码’,’数据库名称’);

mysqli_affected_rows()函数

判断数据库表格是否有影响相应的行数

<?php
mysqli_query($mysql_con,$sql);
mysqli_affected_rows($mysql_con);
?>

连接数据库示例

注意SQL语句中的不是引号是``符号

连接数据库

<?php
$mysql_con = mysqli_connect(‘localhost’,’root’,’webdatabase’);//将数据库连接实例化
//其中密码部分可以以’’代替也可以直接不填
print_r($mysql_con);//打印数据库连接信息
?>

设置连接编码

<?php
mysqli_query($mysql_con,’set names utf8’);
?>

执行SQL数据

<?php
$sql = “SELECT * FROM `webdatabase`”;
$result = mysqli_query($mysql_con,$sql);
print_r($result);//打印执行SQL语句后返回的结果集
?>

转换结果集

<?php
$result_array = mysqli_fetch_assoc($result);//其中每转换一次就会偏移一行
print_r($result_array);
?>

SESSION

SESSION用于保存当前用户在当前网站的当次会话的临时记录,会话中断以前都可以随时调用该SESSION记录,其中用户即当前浏览器;网站指主域名即https://主域名/之间的域名;当次会话指浏览器以及会话没有超时。
可以利用SESSION在不同页面之间传递参数

SESSION写入

<?php
session_start();//开启SESSION
$_SESSION[‘user’] = ‘Mia’;//写入SESSION
?>

SESSION读取

print_r($_SESSION)
print_r($_SESSION['item'])

SESSION销毁

session_destroy();//销毁所有SESSION
unset($_SESSION[‘user’]);//销毁指定SESSION

AJAX

Asynchronous Javascript And XML异步JS和XML同步技术
image-20210808170346167
jQuery中文手册地址:http://jquery.cuishifeng.cn/

前端jQuery触发AJAX

示例步骤
1.引入JQuery文件
2.绑定触发事件(按键弹起)
3.触发AJAX
4.配置AJAX参数

JQuery AJAX函数参数表
参数名说明示例
type参数提交方式$.ajax({ type: "POST", //参数传递的方式(GET/POST) url: "check.php", //服务器端的响应文件地址 data: {"username":username}, //参数 success: function(msg){ //响应成功之后调用的函数 if(msg == 1){nextspan($user,'可用',0,1);} else{nextspan($user,'禁用',1,1);} } });
url服务器处理请求的页面地址
data传递的参数
datatype服务器返回的数据类型
success相应成功的回掉函数

5.根据需要添加return false

服务端响应

<?php//验证用户名是否重复
$username = $_POST['username'];  //获取传递的参数
$mysqli = mysqli_connect('localhost','root','','webchat');  //登录数据库
mysqli_query($mysqli,'set names utf8');  //防止乱码
$sql = "SELECT * FROM `user` WHERE `username`='$username'";  //SQL
$result = mysqli_query($mysqli,$sql);  //执行SQL
$r = mysqli_fetch_assoc($result);  //将结果转换为数组
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && empty($r))
{echo 1;}
else
{echo 0;}
?>

返回JSON

<?php
$mysqli = mysql_connect("localhost","root","password","web");
mysqli_query($mysqli,"set names utf-8");
$sqli = "SELECT * FROM `chat`";
$res = mysqli_query($mysqli,$sqli);
$row = array();
while ($r = mysqli_fetch_assoc($res)) {
    $row = $r;
}
echo json_encode($row);
?>

WAMP

WAMP开启成功之后直接打开localhost:80地址

httpd.confAppache配置文件
php.iniPHP配置文件
my.iniMySQL配置文件

将PHP程序(文件) 放在www directory,通过在浏览器输入相应的地址即http://127.0.0.1或http://localhost再访问相应的文件

PHP MyAdmin数据库

PHP MyAdmin是WAMP自带的一个MySQL数据库管理软件,相当于一个精简版的MySQL

新建数据库

在浏览器中打开控制台界面,找到PHP MyAdmin,默认用户名为root,密码为空,在登录界面输入账号密码之后进入到管理台界面,点击”新建”
image-20210808170743775
设置”数据库名称”以及”排序规则”,其中排序规则指的是编码格式,选择”utf8_general_ci”防止中文乱码
image-20210808170806595

新建数据表

输入表的名称以及表的字段数,点击”执行按钮”
image-20210808170833995
设置字段参数值
其中设置”userid”为”PRIMARY”主键,即为唯一的索引,将其”AI”选项勾上之后,在弹出框点击”执行”,其它参数设置如下图。其中密码加密使用MD5,MD5加密之后为32位。设置完成之后点击”保存”
image-20210808170916511
image-20210808170928310
数据表创建完成
image-20210808170937962

数据表插入数据

选择相应的数据表,点击”插入”按钮,输入相应的数据之后点击”执行”
image-20210808171015434

image-20210808171022263
image-20210808171031840

数据表添加字段

image-20210808171052419
image-20210808171059289

常见故障

WAMP局域网中的主机无法访问

You don’t have permission to access / on this server
1.检查防火墙
2.开启WAMP Online
3.httpd.conf中设置目录权限
apache 的 httpd.conf文件,将其中的 Require local 修改成 Require all granted
apache的httpd-vhosts.conf. 找到 <VirtualHost *:80>节点上的所有虚拟站点,将其中的 Require local 都改成 Require all granted

端口号被占用

netstat -noa
查看应用进程是否有占用80端口号,如果已占用则打开httpd.conf文件将所有的80端口修改成其它端口号

Last modification:August 8th, 2021 at 05:28 pm
硬币投入口