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
相关推荐
芊寻(嵌入式)3 分钟前
C转C++学习笔记--基础知识摘录总结
开发语言·c++·笔记·学习
一颗松鼠12 分钟前
JavaScript 闭包是什么?简单到看完就理解!
开发语言·前端·javascript·ecmascript
有梦想的咸鱼_13 分钟前
go实现并发安全hashtable 拉链法
开发语言·golang·哈希算法
海阔天空_201319 分钟前
Python pyautogui库:自动化操作的强大工具
运维·开发语言·python·青少年编程·自动化
天下皆白_唯我独黑26 分钟前
php 使用qrcode制作二维码图片
开发语言·php
夜雨翦春韭30 分钟前
Java中的动态代理
java·开发语言·aop·动态代理
小远yyds32 分钟前
前端Web用户 token 持久化
开发语言·前端·javascript·vue.js
何曾参静谧44 分钟前
「C/C++」C/C++ 之 变量作用域详解
c语言·开发语言·c++
q567315231 小时前
在 Bash 中获取 Python 模块变量列
开发语言·python·bash
许野平2 小时前
Rust: 利用 chrono 库实现日期和字符串互相转换
开发语言·后端·rust·字符串·转换·日期·chrono