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实现逐字实现中文可能要恶补一下编码知识了。

相关推荐
倔强的石头_44 分钟前
kingbase备份与恢复实战(二)—— sys_dump库级逻辑备份与恢复(Windows详细步骤)
数据库
阿巴斯甜6 小时前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker7 小时前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq95278 小时前
Andorid Google 登录接入文档
android
黄林晴9 小时前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
BingoGo10 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack10 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
冬奇Lab21 小时前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿1 天前
Android MediaPlayer 笔记
android
Jony_1 天前
Android 启动优化方案
android