gpt4 book ai didi

php - 使用PDO连接方式

转载 作者:行者123 更新时间:2023-11-29 02:26:20 25 4
gpt4 key购买 nike

当我第一次开始学习 php 时,我明白将 db 连接文件存储在我的根文件夹中并在每个文件的顶部包含一次是一个很好的做法。这些设置将贯穿整个文件并在函数内部工作等 - 因此同一个文件是存储全局变量的好地方。

现在我终于更新了我的代码/开始了一个新项目,我知道 mysql 函数已经过时了,我应该使用 PDO 或 MySQLi。我读到的一些东西表明,按照旧样式使用 Mysqli 进行 while 循环更难,所以我认为 PDO 可能是一个更好的起点。

//例如

while($val = mysql_fetch_array($query)){
$propertyid = $val['propertyid'];
$regularid = $val['regularid'];
$oldamount = str_replace(",", "", $val['amount']);
$datedue = $val['billdate'];
}

所以我认为最好从 PDO 开始。如果我在它之前立即包含 $dbh 连接线,则下面的工作。但是,当我将 $dbh 连接线移动到我的安装文件时,它没有。

$query = $dbh->prepare("SELECT username FROM users");
$query->execute();
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
print "hi ";
print $row['username']."<br/>";
}

我知道在每个新函数中都需要调用连接。我的问题是:

  1. 将数据库连接添加到每个函数的代码密集度最低的方法是什么
  2. 我最好将用户名和密码存储在哪里 - root php? .ini 文件?
  3. 有没有比我一直使用的方法“更好”的方法来执行 while 循环...

最佳答案

在迁移到 PDO(面向对象的库)的同时,尝试将您的项目迁移到相同的编码方式 - 面向对象的范例。

您可以构建的简单架构是:

  • 建立 PDO 连接的类(即数据库)
  • 具有凭据的配置文件
  • 从与数据库交互的每个其他类扩展而来的类(即 Base)。此类应包含您的数据库类的实例(即 protected $_db,在构造函数 $this->_db = new Database() 中)
  • 您的每个与数据库交互的类(extends Base)现在都可以执行$this->_db->prepare(....)

所以这里最重要的是你的连接是一个通过你的数据库交互类共享的对象。

关于循环。您几乎无法将 while() 用于方法返回值。事实上你会的,但这是一种矫枉过正。

您的方法应该返回获取的结果:

public function getUsers() {
$query = $this->_db->prepare("SELECT username FROM users");
$query->execute();
return $query->fetch(PDO::FETCH_ASSOC);
}

或(这应该不是必需的):

while ($row = $query->fetch(PDO::FETCH_ASSOC) {
$users[] = $row;
}
return $users;

这样您的getUsers() 方法将返回结果集作为关联数组,PHP 中处理数组的最佳内置函数是foreach(),因此您需要遍历方法返回值:

foreach ($obj->getUser() as $row) {
// do smth
}

关于php - 使用PDO连接方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20995753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com