当前位置: 首页 > 后端技术 > PHP

PHP最佳实践数据库

时间:2023-03-30 06:02:09 PHP

PDO扩展PHP原生提供了PDO扩展,即PHP数据对象。数据库链接和DSNDSN是指数据源名称并提供数据库链接的详细信息。一般包含以下信息:主机名或IP地址、端口号、数据库名、字符集。以上信息组成的DSN可以作为PDO类构造函数的第一个参数,第二个和第三个参数分别是数据库的用户名和密码。如果数据库需要认证,则需要提供这两个参数。prepare($sql);在此SQL语句中,电子邮件值可以安全地绑定到任何值。prepare($sql);$email=filter_input(INPUT_GET,'email');$statement->bindValue(':电子邮件',$电子邮件);准备好的语句将自动过滤$email的值。PDOStatement的第三个参数可以指定绑定值的类型。如果不填,默认为字符串类型。可选的常量类型如下:PDO::PARAM_BOOLPDO::PARAM_NULLPDO::PARAM_INTPDO::PARAM_STR(默认值)查询结果如果执行select方法,我们需要使用fetch()、fetchAll()、fetchColumn()和fetchObject()方法获取查询结果。//将preparedstatement得到的结果作为关联数组$sql='SELECTid,emailFROMusersWHEREemail=:email';$statement=$pdo->prepare($sql);$email=filter_input(INPUT_GET,'email');$statement->bindValue(':email',$email);$statement->execute();//迭代结果while(($result=$statement->fetch(PDO::FETCH_ASSOC))!==false){echo$result['email'];}fetch,fetch所有参数可选PDO::FETCH_ASSOC:返回关联数组PDO::FETCH_NUM:返回键为数字的数组查询结果中数据库列的索引PDO::FETCH_BOTH:返回一个以列名为键、以数字为键的数组。PDO::FETCH_OBJ:让fetch()和fetchAll()返回一个对象,其属性是数据库的列名。不建议使用fetchAll()除非您绝对确定可用内存将保存整个查询结果。如果只关心查询结果中的一列,可以使用fetchColumn()方法。此方法类似于fetch()方法,返回查询结果中下一行的列。该方法只有一个参数用于制定所需的索引。//构建并执行SQL查询$sql='SELECTid,nameFROMusersWHEREemail=:email';$statement=$pdo->prepare($sql);$email=filter_input(INPUT_GET,'email');$statement->bindValue(':email',$email);$statement->execute();while(($emal=$statament->fetchCoulmn(1))!==false){echo$email;}因为在SQL语句中,第二个字段出现了email,所以这里使用索引1来取。我们还可以使用fetchObj()方法来获取查询结果中的行。此方法将行视为对象,对象的属性是查询结果中的列。//构建并执行SQL查询$sql='SELECTid,nameFROMusersWHEREemail=:email';$statement=$pdo->prepare($sql);$email=filter_input(INPUT_GET,'email');$statement->bindValue(':email',$email);$statement->execute();while(($result=$statament->fetchObj())!==false){echo$result->email;}事务事务是指将一系列数据库语句作为一个逻辑执行单元执行,也就是说一个事务中的一系列SQL查询要么执行成功要么不执行.事务的原子性能保证了数据的一致性、安全性和持久性。事务的另一个好的副作用是提高性能,因为事务将多个查询排队并一次执行它们。专题系列PHP专题系列目录地址:https://github.com/xx19941215/webBlogPHP专题系列预计写20篇左右,主要总结了我们日常PHP开发中容易忽略的基础知识以及规范、部署、一些实用的优化建议,以及对Javascript语言特性的深入研究。