php 快速入门(七)

一、操作数据库

1.1 操作MySQL的步骤

第一步:登录MySQL服务器
第二步:选择当前数据库
第三步:设置请求数据的字符集
第四步:执行SQL语句

1.2 连接MySQL

函数1:mysql_connect()

  • 功能:连接(登录)到MySQL服务器。
  • 语法:
    $link = mysql_connect($db_host,$db_user,$db_pwd)
    
  • 参数:
    $db_host:代表MySQL服务器的主机名或ip地址,本地是localhost
    $db_user:代表MySQL服务器的用户账号。如:root
    $db_pwd:代表MySQL服务器的用户密码。如:root
  • 返回值:连接成功,返回一个资源类型的标识符。如果连接失败,返回false

案例

<?php$db_host = "localhost";$db_user = "root";$db_pwd = "123";$connSql = mysql_connect($db_host,$db_user,$db_pwd);if($connSql){echo "连接成功";}else{echo "连接失败";exit();}
?>

exit()

功能:输出一个信息,并终止程序运行。
语法:void exit ([string '$status'])

举例:exit("程序运行出错了")

mysql_errot()

功能:输出上一次操作MySQL出错的文本信息。
语法:Strint **mysql_error** ([ resource `$link` ])

参数:$link代表当前的活动连接

案例:如果连接MySQL失败了,提示错误信息

<?php$db_host = "localhost";$db_user = "tom"$db_pwd = "321"$connSql=mysql_connect($db_host,$db_user,$db_pwd);if ($connSql){echo "连接成功";} else {echo "连接失败<br>".mysql_error();exit();};
?>

此时连接数据库报错了,给出了错误信息,但是也给出了系统经过信息,如下

如果不想看到这个信息,我们可以修改代码如下:

<?php$db_host = "localhost";$db_user = "tom"$db_pwd = "321"// @是用来屏蔽系统错误信息的$connSql = @mysql_connect($db_host,$db_user,$db_pwd);if ($connSql){echo "连接成功";} else {echo "连接失败<br>".mysql_error();exit();};
?>

说明:

  • @ 用来屏蔽系统错误信息
  • mysql_error() 这个函数通常是用在测试过程中的,上线之前需要删除

10.3 选择数据库

mysql_slect_db()

  • 功能:选择要操作的数据库
  • 语法
    mysql_select_db ( strint `$database_name` [, resource `$ link_identifier` ] )
  • 参数:
    $database: 代表你要操作的数据库名称。
    [$link]可选,代表当前的活动连接。
  • 返回值:成功选择返回true,选择失败返回false

案例:

<?php$db_host = "localhost";$db_user = "tom"$db_pwd = "321"$connSql=mysql_connect($db_host,$db_user,$db_pwd);if ($connSql){echo "连接成功";} else {echo "连接失败<br>".mysql_error();exit();};//选择数据库,假设连接的库名为test库$db_name = "test";if(mysql_select_db($db_name)){echo "成功选中";} else {echo "选择数据库失败<br>".mysql_error();}
?>

1.4 设置返回的数据字符集

mysql_query("set names utf8")

1.5 执行SQL语句

mysql_query()

  • 功能:执行各种SQL语句。换句话说,就是向MySQL服务器发出请求。
  • 语法:resource $result = mysql_query($sql [$link])
  • 参数:$sql:是各种SQL语句
    增加SQL: $sql = "insert into news(title,content) values('title','content')"
    删除SQL: $sql = "delete from news where id=5"
    更新SQL: $sql = "update news set title = '新title' where id=5"
    查询SQL: $sql = "select * from news";
    
  • 参数:$link:代表当前活动连接,如果省略,就以上一个正常打开的连接为准。
  • 返回值: 
    当执行select、show、describe这些SQL语句时,成功返回结果集(也是一个资源的数据类型),失败返回false.
    当执行delete、update/insert这些SQL语句时,成功返回true,失败返回false

案例:

<?php$db_host = "localhost";$db_user = "tom"$db_pwd = "321"$connSql=mysql_connect($db_host,$db_user,$db_pwd);if ($connSql){echo "连接成功";} else {echo "连接失败<br>".mysql_error();exit();};//选择数据库,假设连接的库名为test库$db_name = "test";if(mysql_select_db($db_name)){echo "成功选中";} else {echo "选择数据库失败<br>".mysql_error();exit();}//向MySQL服务器发出请求,执行sql语句$sql = "select * from students;"$res = mysql_query($sql);if($res){echo $res; //这里仅仅是结果集,不是具体内容}elseecho mysql_error();}
?>

1.6 从结果集中读取数据

mysql_fetch_row()

  • 功能:从结果集中读取一行数据,并以枚举数组返回,并且读完一行,指针下移。
  • 语法:
    array mysql_fetch_row(resource $result)

  • 参数:$result 代表返回的结果集
  • 返回值:返回一个枚举数组,也就是说这一行数据时存在数组中的,每个字段的下标是从0开始的正整数。

案例:从数据集中读取一行内容,并展示出来

$sql = "select * from students";
$res = mysql_query($sql);
if(!$res)
{echo mysql_error();
}
//从结果集中读取出一行数据,作为枚举数组对象返回
//******每次执行只能读取出来一行*****
$resRow = mysql_fetch_row($res);
//这一行是一个数组,因此可以用print_r打印数组中的内容
echo "<pre>";
print_r($resRow);
echo "<pre>"

1.7 统计读取的行数

mysql_num_rows()

  • 功能:从结果集中取出来记录总数,查询以后,找到了多少条记录。
  • 语法:
    int $records = mysql_num_rows($result)
  • 注意:只能从结果集中返回记录总数。
  • 返回值:如果没有找到,返回0
<?php$db_host = "localhost";$db_user = "tom"$db_pwd = "321"$connSql=mysql_connect($db_host,$db_user,$db_pwd);if ($connSql){echo "连接成功";} else {echo "连接失败<br>".mysql_error();exit();};//选择数据库,假设连接的库名为test库$db_name = "test";if(mysql_select_db($db_name)){echo "成功选中";} else {echo "选择数据库失败<br>".mysql_error();exit();}mysql_query("set numes utf8");$resources = mysql_query($SQL);$resourcesNum = mysql_num_rows($resources);if ($resourcesNum == 0){echo "没有找到";}else{echo "查询结果数量:".$resourceNum;}
?>

1.8 其他的函数

mysql_fetch_array()

  • 功能:从结果集中读取一行数据,并以混合数组返回。
  • 语法:array mysql_fetch_array(resource $result[type])

mysql_fetch_assoc()

  • 功能:从结果集中读取一行数据,并以关联数组(其实就是字符下标)返回。
  • 语法:array mysql_fetch_assoc(resource $result)

二、扩展内容

2.1 urlencode() 函数

        urlencode($str)的作用是对字符串$str进行url编码,方便$str作为一个变量传递给下一页,一般情况下$str有两种:

  • 第一种是数组类型,如果想将数组作为url的一个参数,即必须将数组转化为一个字符串,通常是需要对数据进行json_encode,然后再urlencode即可。
  • 第二种是中文,中文作为url的一个参数有时会出错,所以通过urlencode进行编码比较安全。

2.2 include()

  • 功能:包含另一个文件的代码。将另一个文件的代码插入到当前文件中执行。
  • 语法:include(filename)
  • 举例:include("conn.php");

2.3 require()

  • 功能:包含另一个文件的代码。将另一个文件的代码插入到当前文件中执行。
  • 语法:require(filename)
  • 举例:require("conn.php")

2.4 include和require的区别

  • 这两个语法结构,除了处理错误信息不一样以外,其他的功能都一样。
  • include 当遇到错误时,程序将继续向下运行,并返回警告信息。
  • require 当遇到错误时,程序将中止运行,并返回致命错误信息。

因此,可以将连接数据库部分代码写作单独文件connMysql.php

<?phpheader("content-type:text/html;charset=utf-8");$db_user = "root";$db_pwd = "123";$db_host = "localhost";$db_name = "hellodb";$SQL = "select stuid,name,age from students";$link = @mysql_connect($db_host,$db_user,$db_pwd);if(!$link){echo "连接数据库失败";exit();} if(!mysql_select_db($db_name)){echo "选择数据库失败";exit();}mysql_query("set names utf8");
?>

然后将主程序中的相同代码删除,并调用这部分代码

<?phprequire("connMysql.php");$resources = mysql_query($SQL);$resourcesNum = mysql_num_rows($resources);if ($resourcesNum == 0){echo "没有找到";}else{echo "查询结果数量:".$resourceNum;}
?>

2.5 header()函数

  • 功能:将数据传往浏览器是,用什么杨的字符集显示。或者,实现网页跳转功能。
  • 语法:void header(strint $strint)
  • 举例1:设置网页中汉字字符集:header("content-type:text/html;charset=utf-8");这个语句通常放在网页最开始部分
  • 举例2:网页跳转功能:header("location:test.php?id=5");     跳转之后,后面的代码将不再执行

补充:关于页面跳转

方法一:直接跳转

header("Location:index.html");

方法二:延时跳转

header("refresh:5;url=http://www.php001.com/index.html")

2.6 md5加密

  • 功能:对字符进行加密,返回32位16进制的散列值
  • 语法:md5(strint)
  • 说明:md5是单向加密。
    <?php$str = "Hello World";$hash = md5($str);echo $hash;
    ?>

扩展:

  • 单向加密:只能加密,不能解密,例如md5,sha512,sha256,定长输出,蝴蝶效应
  • 对称加密:可以加密,也可以解密,加密和解密用的是同一个秘钥。
  • 非对称加密:可以加密,也可以解密,加密用的是公钥,解密用的是私钥。

2.7 字符串替换

2.7.1 preg_replace() 函数

preg_replace() 函数是一个强大的正则表达式替换函数,可以快速准确地将满足某种模式的字符串替换为指定的字符串。

在移除空格时,可以利用 preg_replace() 函数来匹配空格并替换为空白字符

mixed preg_replace ( mixed $pattern ,mixed $replacement,mixed $subject [, int $limit = -1 [,int &$count ]] )

$pattern 表示要匹配的正则表达式模式

$replacement 表示替换成的字符串

$subject 表示要处理的字符串

$limit 表示最多替换的次数

$count 是一个引用变量,表示实际替换的次数

案例

$str = 'hello world';
$pattern = '/\s+/'; //匹配一个或多个空格
$replacement = '';
echo preg_replace($pattern,$replacement,$str);   //输出 'helloworld'
2.7.2 str_replace() 函数

str_replace() 函数用于搜索并替换字符串中的另一个字符串。我们可以使用该函数来搜索空格并替换为空白字符

mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ])

$search 表示要搜索的字符串

$replace 表示要替换成的字符串

$subject 表示要处理的字符串

$count 是一个引用变量,表示实际替换的次数

案例:

$str = 'hello world';
$search = ' ';
$replace = ' ';
echo str_replace($search,$replace,$str);   //输出: 'helloworld'

2.8 页面直接跳转

实现页面直接跳转有两种方法

方法一:在php中,执行js代码,实现跳转

echo '<script> location.href="http://www.zx.com/2.php" </script>';

方法二:在php中,直接执行header方法,实现跳转

header("location:http://www.zx.com/2.php");

2.9 页面延时跳转

方法一:在php中,执行js代码,实现跳转

<script language="JavaScript">function myrefresh(){location.href="<?php echo http://www.baidu.com ?>";}setTimeout('myrefresh()',3000);   //指定3秒跳转
</script>

方法二:在php中,直接执行header方法,实现跳转

<?phpheader("refresh:5;url=http://www.xxxx.com");print('正在加载,请稍等...<br>五秒后自动跳转');
?>

三、服务端接受数据问题

在php中,服务端是通过$_SERVER 来接收客户端传递的数据的

  1. $_SERVER['SERVER_NAME']:当前运行脚本所在服务器主机的名称。
  2. $_SERVER['SERVER_PROTOCL']:请求页面时通信协议的名称和版本。例如,"HTTP/1.0"。
  3. $_SERVER['REQUEST_METHOD']:访问页面时的请求方法。例如:"GET"、"HEAD"、"POST"、"PUT"。
  4. $_SERVER['QUERY_STRING']:查询(query)的字符串
  5. $_SERVER['DOCUMENT_ROOT']:当前运行脚本所在的文档根目录。在服务器配置文件中定义。
  6. $_SERVER['HTTP_ACCERT']:当前请求的Accept:头部的内容。
  7. $_SERVER['HTTP_CONNECTION']:当前请求的 Connection:头部的内容。例如:“Keep-Alive”。
  8. $_SERVER['HTTP_HOST']:当前请求的HOST:头部内容。
  9. $_SERVER['HTTP_REFERERE']:连接当前页面的前一页面的URL地址。
  10. $_SERVER['HTTP_USER_AGENT']:当前请求的User_Agent:头部内容。
  11. $_SERVER['HTTPS']:如果通过https访问,则被设为一个非空的值(on)否则返回off。
  12. $_SERVER['REMOTE_ADDR']:正在浏览当前页面用户的IP地址。
  13. $_SERVER['REMOTE_HOST']:正在浏览当前页面用户的主机名
  14. $_SERVER['REMOTE_POSRT']:用户连接到服务器时所使用的端口
  15. $_SERVER['SERVER_PORT']:服务器所使用的端口
  16. $_SERVER['HTTP_X_FORWARDED_FOR']:通过代理服务器取得客户端的真实IP地址
  17. $_SERVER['HTTP_VIA']:代理服务器IP
  18. $_SERVER['HTTP_CLIENT_IP']:客户端IP

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/576187.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【分类评估指标,精确率,召回率,】from sklearn.metrics import classification_report

from&#xff1a; https://zhuanlan.zhihu.com/p/368196647 多分类 from sklearn.metrics import classification_report y_true [0, 1, 2, 2, 2] y_pred [0, 0, 2, 2, 1] target_names [class 0, class 1, class 2] # print(classification_report(y_true, y_pred, targe…

AJAX-项目优化(目录、基地址、token、请求拦截器)

目录管理 基地址存储 在utils/request.js配置axios请求基地址 作用&#xff1a;提取公共前缀地址&#xff0c;配置后axios请求时都会baseURLurl 填写API的公共前缀后&#xff0c;将js文件导入到html文件中 <script src"../../utils/request.js"></script&…

黑群晖基于docker配置frp内网穿透

前言 我的黑群晖需要设置一下内网穿透来外地访问&#xff0c;虽然zerotier的p2p组网已经很不错了&#xff0c;但是这个毕竟有一定的局限性&#xff0c;比如我是ios的国区id就下载不了zerotier的app&#xff0c;组网不了 1.下载镜像 选择第一个镜像 2.映射文件 配置frpc.ini&a…

Linux shell编程学习笔记42:md5sum

0 前言 前几天在国产电脑上遇到一个问题&#xff0c;先后接到两个文件&#xff0c;如何判断这两个文件内容是否相同&#xff1f; 如果是在Windows系统&#xff0c;可以用fc命令&#xff0c;或者用我自己写的FileInfo&#xff0c;提取两个文件有MD5、SHA1、CRC32值进行比较来判…

2.4 比较检验 机器学习

目录 常见比较检验方法 总述 2.4.1 假设检验 2.4.2 交叉验证T检验 2.4.3 McNemar 检验 接我们的上一篇《性能度量》&#xff0c;那么我们在某种度量下取得评估结果后&#xff0c;是否可以直接比较以评判优劣呢&#xff1f;实际上是不可以的。因为我们第一&#xff0c;测试…

小美的平衡矩阵(前缀和例题)

2024美团秋招&#xff0c;被这一题给难住了 美团校招笔试真题_Java工程师、C工程师_牛客网 题目&#xff1a; 解答&#xff1a; 这道题的关键点就是要计算出以某一点为矩阵右下角时&#xff0c;1的个数 我一开始是想着遍历&#xff0c;以某一点为起点&#xff08;矩阵左上角&a…

做Linux驱动开发,怎么去看懂驱动框架?

理解Linux驱动框架是进行Linux驱动开发的关键一步。我这里有一套嵌入式入门教程&#xff0c;不仅包含了详细的视频讲解&#xff0c;项目实战。如果你渴望学习嵌入式&#xff0c;不妨点个关注&#xff0c;给个评论222&#xff0c;私信22&#xff0c;我在后台发给你。 以下是一些…

力扣124---二叉树的最大路径和(DFS,Java)

目录 题目描述&#xff1a; 思路描述&#xff1a; 代码&#xff1a; 题目描述&#xff1a; 二叉树中的 路径 被定义为一条节点序列&#xff0c;序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点&#xff0c;且不一…

Linux repo基本用法: 搭建自己的repo仓库[服务端]

概述 Repo的使用离不开Git, Git 和 Repo 都是版本控制工具&#xff0c;但它们在使用场景和功能上有明显区别… Git 定义&#xff1a;Git 是一个分布式的版本控制系统&#xff0c;由 Linus Torvalds 为 Linux 内核开发而设计&#xff0c;现已成为世界上最流行的版本控制软件之…

Codeforces Round 841 (Div. 2) C. Even Subarrays

题目 思路&#xff1a; #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 const int maxn 1e6 5, inf 1e9, maxm 4e4 5; co…

安全的内网通讯软件,WorkPlus定制化 IM/办公门户解决方案

如今处于数字化转型的“加速期”&#xff0c;政企正经历着一场数字化迭代升级的时代浪潮。而不少企业都已具备了数字化管理的意识&#xff0c;数字化应用场景也在全面推开。WorkPlus不断推动信息技术与企业业务深度融合&#xff0c;作为安全的内网通讯软件&#xff0c;为企业提…

主流好用的 Markdown 编辑器介绍

在当今程序员的日常工作中&#xff0c;Markdown 已经成为了一种常用的文本标记语言&#xff0c;它简洁、易读、易写&#xff0c;被广泛应用于写作、文档编写、博客撰写等场景。为了更高效地编辑和管理 Markdown 格式的文档&#xff0c;选择一款功能强大、易用的 Markdown 编辑器…