PHP进阶-php文件读取与连接数据库基础部分

php连接数据库

apche-》(调用php)php-》(加载mysql扩展)mysql

首先在php的文件夹里面的ini文件修改,以至于可以加载mysql,还要看php的拓展文件夹里面有没有mysql的拓展包,默认是有的。

php连接mysql的方法有两种。

MySQLi 和 PDO 有它们自己的优势:

PDO 应用在 12 种不同数据库中, MySQLi 只针对 MySQL 数据库。

1MySQLi extension

2PDO (PHP Data Objects)

我研究了一下第一种,第二种等有机会遇到再说了。

关于如何去写具体也有两点,一种是面向对象,一种是面向过程,我为了图省事只记住了面向对象的方法,现在明白了面向对象的好处了。

<?php

$servername = "localhost:3306";

$username = "root";

$password = "12345678";

// 创建连接

conn = new mysqli(servername, username, password);

// 检测连接

if ($conn->connect_error) {

die("连接失败: " . $conn->connect_error);

}

echo "连接成功";

?>

mysqli()是php的内置类

conn-\>connect_error,conn 是通过 new mysqli(...) 创建的代表数据库连接的对象。connect_error 是 mysqli 对象的一个属性,它存储了在连接数据库过程中发生的错误信息。如果连接成功,这个属性的值将为空字符串,表示没有错误发生;如果连接失败,它将包含一个描述错误原因的字符串,例如 "无法连接到数据库服务器""访问被拒绝" 等具体的错误信息。

php创建数据库

<?php

$servername = "localhost";

$username = "username";

$password = "password";

// 创建连接

conn = new mysqli(servername, username, password);

// 检测连接

if ($conn->connect_error) {

die("连接失败: " . $conn->connect_error);

}

// 创建数据库

$sql = "CREATE DATABASE myDB";

if (conn-\>query(sql) === TRUE) {

echo "数据库创建成功";

} else {

echo "Error creating database: " . $conn->error;

}

$conn->close();

在// 创建数据库之前的内容是重复的,不进行详细思考了。

$sql = "CREATE DATABASE myDB"; 这行代码定义了一个 SQL 语句字符串。在 SQL 中,CREATE DATABASE 是用于创建新数据库的命令,这里的 myDB2 就是要创建的数据库的名称。

但是只有这一行实际什么也没有发生,因为这只是字符串而已。

conn-\>query(sql) 这部分是通过之前创建的 $conn(也就是代表和 MySQL 数据库服务器连接的那个对象)来执行这条 CREATE DATABASE 的 SQL 语句。

也就是说实际执行是conn-\>query(sql)这么一段话。

那其实可以简写一下上述的代码,作为练习使用。上面的代码和下面的代码有着相同的效果

<?php

$conn = new mysqli("localhost", "root", "12345678");//连接数据库

$conn->query("CREATE DATABASE myikun23");//创建数据库

$conn->close();//关闭连接

//这时候去mysql里面看就能看见"myikun23"了

?>

思考

conn-\>query(sql)这一段明明是在if里面,为什么会被执行呢?

计算机在执行 if 语句时,首先要做的就是对这个表达式进行求值,以此来确定条件是否满足。

对于 conn-\>query(sql) 这部分,它是调用 conn 对象(这个对象代表与 MySQL 数据库的连接)的 query 方法,并传入 sql 这个包含 SQL 语句的字符串参数,目的是让数据库去执行这条 SQL 语句。这个 query 方法执行后,会返回一个结果值,这个值就会作为整个表达式的值来参与后续的条件判断。

也就是说,为了知道 conn-\>query(sql) === TRUE 这个条件到底是成立还是不成立,计算机必须先执行 conn-\>query(sql) 得到返回值,然后再拿这个返回值去和 TRUE 进行比较,看是否相等。

PHP readfile() 函数

readfile() 函数输出一个文件。

该函数读入一个文件并写入到输出缓冲。

若成功,则返回从文件中读入的字节数。若失败,则返回 false。

代码示例

<?php

echo readfile("test.txt");

?>

不想要返回值直接写readfile("test.txt");就好。

php文件打开,读取,关闭

完整打开读取最后关闭的代码段

<?php

$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");

echo fread($myfile,filesize("webdictionary.txt"));

fclose($myfile);

?>

fopen是PHP之中的打开文件函数。

fopen() 的第一个参数包含被打开的文件名,第二个参数规定打开文件的模式。

这类只介绍该函数的第一个参数,也就是r

r的意思为只读。

or die("Unable to open file!");如果 fopen() 函数不能打开指定的文件,下面的实例会生成一段消息:"Unable to open file!"

其中的die()可以替换为 exit(),die() 函数:它是 exit() 函数的别名,两者有些许区别,但暂时用不上,等用到在学。

fread() 函数读取打开的文件。fread() 的第一个参数包含待读取文件的文件名,第二个参数规定待读取的最大字节数。

filesize()函数返回指定文件的大小。

fread()函数就像是一个文件内容的 "小勺子",它能从文件这个 "大容器" 里一勺一勺地舀出内容。

第一个参数就是从哪里挖。第二个参数就是挖多少。

echo fread($myfile,filesize("webdictionary.txt"));就是告诉计算机,从web...文件开始挖掘,一次全拿出来。

fclose() 函数用于关闭打开的文件。

注释:用完文件后把它们全部关闭是一个良好的编程习惯。您并不想打开的文件占用您的服务器资源

在之前的代码之中,虽然输出了,但是格式却是全集在一行上面了,可以使用pre标签来让代码呈现出来的文本与txt格式一致。

echo "<pre>".fread($myfile,filesize("kun.txt"))."</pre>";

fgets() 函数用于从文件读取单行。第一个参数为要读取的文件,第二个参数为每次读取多少字节数。但都是一行的字节数。

<?php

$file = fopen("kun.txt", "r") or exit("无法打开文件!");

echo fgets($file);

fclose($file);

?>

如果fgets($file,10);那么将会只读取第一行的十个字节。

在调用该函数之后,文件指针会移动到下一行。

echo fgets(file);echo fgets(file);两次就输出txt文本之中两行。

feof() 函数是 PHP 中用于检测文件指针是否已到达文件末尾的函数。

在循环遍历未知长度的数据时,feof() 函数很有用。

当文件指针到达文件末尾或者在读取文件过程中发生错误时,feof()函数返回true

实例

<?php

$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");

while(!feof($myfile)) {

echo fgets($myfile) . "<br>";

}

fclose($myfile);

?>

fgetc() 函数用于从文件中逐字符地读取文件。

把上述的fgets换成fgetc就好了,但是注意中文字符会乱码,如果想用fgetc实现逐字实现中文可能要恶补一下编码知识了。

相关推荐
陆少枫1 小时前
MySQL基础关键_004_DQL(三)
数据库·mysql
焱焱枫2 小时前
Oracle 数据布局探秘:段与区块的内部机制
数据库·oracle
焱焱枫3 小时前
深入理解 Oracle 数据块:行迁移与行链接的性能影响
数据库·oracle
长流小哥3 小时前
MySQL零基础入门:Ubuntu环境安装与操作精解
数据库·sql
临界点oc4 小时前
Redis从入门到实战 - 高级篇(上)
数据库·redis·缓存
电商数据girl6 小时前
【Python爬虫电商数据采集+数据分析】采集电商平台数据信息,并做可视化演示
java·开发语言·数据库·爬虫·python·数据分析
杨云龙UP7 小时前
SQL 中的中括号 [ ]、双引号 “ “、反引号 ` `:SQL Server、Oracle、MySQL三大数据库标识符 定界符 详解
数据库·sql·mysql·postgresql·oracle·sqlserver
qqxhb8 小时前
零基础学Java——第九章:数据库编程(三)
java·数据库·spring·mybatis
柯南二号8 小时前
Android Studio根目录下创建多个可运行的模块
android·ide·android studio
Leo.yuan9 小时前
直播数据大屏是什么?企业应如何构建直播数据大屏?
大数据·数据库·python·信息可视化·数据分析