当前位置: 首页 > 科技观察

PHPPDO简单教程

时间:2023-03-12 02:06:28 科技观察

大约80%的Web应用程序由PHP提供支持。同样,SQL也是如此。在PHP5.5之前,我们有用于访问MySQL数据库的mysql_命令,但由于安全性不足,它们最终被弃用了。弃用发生在2013年的PHP5.5中,我在2018年用PHP7.2写这篇文章。mysql_的弃用带来了访问数据库的两种主要方法:mysqli和PDO库。虽然官方指定了mysqli库,但PDO的功劳更大,因为mysqli只能支持mysql数据库,而PDO可以支持12种不同类型的数据库驱动程序。此外,PDO具有其他特性,使其成为大多数开发人员的更好选择。您可以在下表中看到一些特性比较:PDOMySQLi数据库仅支持12个驱动程序MySQL范式OOP过程+OOP准备语句(客户端)YesNo1namedparameterYesNo现在我认为对于大多数开发人员来说,PDO是最好的已经很清楚了。因此,让我们深入研究一下,并希望在本文中尽可能多地涵盖您需要了解的PDO。连接第一步是连接到数据库,因为PDO是完全面向对象的,我们将使用PDO类的一个实例。我们要做的第一件事是定义主机、数据库名称、用户名、密码和数据库字符集。$host='localhost';$db='theitstuff';$user='root';$pass='root';$charset='utf8mb4';$dsn="mysql:host=$host;dbname=$db;charset=$charset";$conn=newPDO($dsn,$user,$pass);之后,如您在上面的代码中所见,我们创建了DSN变量,它只是一个变量。对于某些在外部服务器上运行MySQL的人,您还可以通过提供port=$port_number来调整端口号。***,你可以创建一个PDO类的实例,我使用了$conn变量并提供了$dsn、$user、$pass参数。如果您按照这些步骤操作,您现在应该有一个名为$conn的对象,它是PDO连接类的一个实例。现在是进入数据库并运行一些查询的时候了。一个简单的SQL查询现在让我们运行一个简单的SQL查询。$tis=$conn->query('SELECTname,ageFROMstudents');while($row=$tis->fetch()){echo$row['name']."\t";echo$row['年龄'];echo"
";}这是使用PDO运行查询的最简单形式。我们首先创建了一个名为tis(TheITStuff的缩写)的变量,然后可以看到我们在创建的$conn对象中使用了query函数。然后我们运行一个while循环并创建一个$row变量来从$tis对象中获取内容,***通过调用列名来显示每一行。很简单,不是吗?现在让我们看看准备好的语句。准备语句准备语句是人们开始使用PDO的主要原因之一,因为它提供了可以防止SQL注入的语句。有两种基本方法可用,您可以使用位置参数或命名参数。位置参数让我们看一个使用位置参数的示例查询。$tis=$conn->prepare("插入学生(姓名,年龄)值(?,?)");$tis->bindValue(1,'mike');$tis->bindValue(2,22);$tis->执行();在上面的示例中,我们放置了两个问号,然后使用bindValue()函数将值映射到查询中。这些值绑定到语句问号内的位置。我还可以使用变量而不是直接提供值,方法是对同一示例使用bindParam()函数:$name='Rishabh';$age=20;$tis=$conn->prepare("插入学生(姓名,年龄)值(?,?)");$tis->bindParam(1,$name);$tis->bindParam(2,$age);$tis->execute();命名参数命名参数也是准备语句,它将值/变量映射到查询中的命名位置。由于没有位置绑定,因此在多次使用同一变量的查询中非常有效。$name='Rishabh';$age=20;$tis=$conn->prepare("插入学生(name,age)values(:name,:age)");$tis->bindParam(':name',$name);$tis->bindParam(':age',$age);$tis->execute();正如您所注意到的,唯一的变化是我使用:name和:age作为占位符,然后将变量映射到它们。很重要的一点是在参数前加一个冒号,让PDO知道这个位置是一个变量。您可以类似地使用bindValue()直接使用命名参数映射值。获取数据PDO在获取数据方面非常丰富,它实际上提供了多种格式来从数据库中获取数据。您可以使用PDO::FETCH_ASSOC获取关联数组,使用PDO::FETCH_NUM获取数字数组,使用PDO::FETCH_OBJ获取对象数组。$tis=$conn->prepare("SELECT*FROMSTUDENTS");$tis->执行();$result=$tis->fetchAll(PDO::FETCH_ASSOC);您可以看到我使用了fetchAll,因为我想要所有匹配的记录。如果你只需要一行,你可以简单地使用fetch。现在我们已经有了数据,是时候遍历它了,这很容易。foreach($resultas$lnu){echo$lnu['name'];echo$lnu['age']."
";}您可以看到,由于我正在请求关联数组,所以我正在按名称访问各个成员。虽然没有定义您希望如何传输数据的要求,但实际上您可以在定义$conn变量本身时将其设置为默认值。您需要做的就是创建一个$options数组,您可以在其中放置所有默认配置,只需将数组传递到$conn变量中即可。$options=[PDO::ATTR_DEFAULT_FETCH_MODE=>PDO::FETCH_ASSOC,];$conn=newPDO($dsn,$user,$pass,$options);这是对PDO的一个非常简短快速的介绍,我们很快就会制作一个高级教程。如果您在理解本教程的任何部分时遇到任何困难,请在评论部分告诉我,我会在那里为您解答。