php 快速入门(七)

一、操作数据库

1.1 操作MySQL的步骤

第一步:登录MySQL服务器

第二步:选择当前数据库

第三步:设置请求数据的字符集

第四步:执行SQL语句

1.2 连接MySQL

函数1:mysql_connect()

  • 功能:连接(登录)到MySQL服务器。

  • 语法:

    php 复制代码
    $link = mysql_connect($db_host,$db_user,$db_pwd)
  • 参数:

    php 复制代码
    $db_host:代表MySQL服务器的主机名或ip地址,本地是localhost
    $db_user:代表MySQL服务器的用户账号。如:root
    $db_pwd:代表MySQL服务器的用户密码。如:root
  • 返回值:连接成功,返回一个资源类型的标识符。如果连接失败,返回false

案例

php 复制代码
<?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 复制代码
<?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 复制代码
<?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()

  • 功能:选择要操作的数据库

  • 语法

    php 复制代码
    mysql_select_db ( strint `$database_name` [, resource `$ link_identifier` ] )
  • 参数:

    php 复制代码
    $database: 代表你要操作的数据库名称。
    [$link]可选,代表当前的活动连接。
  • 返回值:成功选择返回true,选择失败返回false

案例:

php 复制代码
<?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 设置返回的数据字符集

php 复制代码
mysql_query("set names utf8")

1.5 执行SQL语句

mysql_query()

  • 功能:执行各种SQL语句。换句话说,就是向MySQL服务器发出请求。

  • 语法:resource result = mysql_query(sql [$link])

  • 参数:$sql:是各种SQL语句

    php 复制代码
    增加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:代表当前活动连接,如果省略,就以上一个正常打开的连接为准。

  • 返回值:

    php 复制代码
    当执行select、show、describe这些SQL语句时,成功返回结果集(也是一个资源的数据类型),失败返回false.
    当执行delete、update/insert这些SQL语句时,成功返回true,失败返回false

案例:

php 复制代码
<?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; //这里仅仅是结果集,不是具体内容
    }
    else
        echo mysql_error();
    }
?>

1.6 从结果集中读取数据

mysql_fetch_row()

  • 功能:从结果集中读取一行数据,并以枚举数组返回,并且读完一行,指针下移。

  • 语法:

    php 复制代码
    array mysql_fetch_row(resource $result)
  • 参数:$result 代表返回的结果集

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

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

php 复制代码
$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()

  • 功能:从结果集中取出来记录总数,查询以后,找到了多少条记录。

  • 语法:

    php 复制代码
    int $records = mysql_num_rows($result)
  • 注意:只能从结果集中返回记录总数。

  • 返回值:如果没有找到,返回0

php 复制代码
<?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

php 复制代码
<?php
    header("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");
?>

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

php 复制代码
<?php
    require("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"); 跳转之后,后面的代码将不再执行

补充:关于页面跳转

方法一:直接跳转

php 复制代码
header("Location:index.html");

方法二:延时跳转

php 复制代码
header("refresh:5;url=http://www.php001.com/index.html")

2.6 md5加密

  • 功能:对字符进行加密,返回32位16进制的散列值

  • 语法:md5(strint)

  • 说明:md5是单向加密。

    php 复制代码
    <?php
        $str = "Hello World";
        $hash = md5($str);
        echo $hash;
    ?>

扩展:

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

2.7 字符串替换

2.7.1 preg_replace() 函数

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

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

php 复制代码
mixed preg_replace ( mixed $pattern ,mixed $replacement,mixed $subject [, int $limit = -1 [,int &$count ]] )

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

$replacement 表示替换成的字符串

$subject 表示要处理的字符串

$limit 表示最多替换的次数

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

案例

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

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

php 复制代码
mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ])

$search 表示要搜索的字符串

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

$subject 表示要处理的字符串

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

案例:

php 复制代码
$str = 'hello world';
$search = ' ';
$replace = ' ';
echo str_replace($search,$replace,$str);   //输出: 'helloworld'

2.8 页面直接跳转

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

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

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

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

php 复制代码
header("location:http://www.zx.com/2.php");

2.9 页面延时跳转

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

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

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

php 复制代码
<?php
    header("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
相关推荐
BingoGo16 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack16 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo2 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack2 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
JaguarJack3 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo3 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
JaguarJack4 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理4 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
feifeigo1234 天前
matlab画图工具
开发语言·matlab
dustcell.4 天前
haproxy七层代理
java·开发语言·前端