当前位置: 首页 > 面试题库 >

PDO连接字符串:最好的方法是什么?

段阳夏
2023-03-14
问题内容

我想使用php /
pdo制作一个后端应用程序。我发现了很多不同的方法来进行PDO连接字符串。我想知道,使用pdo做连接字符串的最佳方法是什么。这是做连接字符串的最佳方法还是我应该使用其他一些代码。欢迎任何建议或调整!

这是我目前所拥有的:

<?php

$host = "localhost";
$db = "phpcrud";
$username = "root";
$password = "";

$conn = new PDO("mysql:host=$host;dbname=$db;charset=UTF8", $username, $password, [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ
]);

?>

问题答案:

这个问题并不像看起来那么容易。我写了一个规范的示例,
如何使用PDO连接到MySQL

因此,让我们看一下可以改进的地方:

  • 可以将charset设置为 utf8mb4 (现在它是MySQL的推荐标准,因为它支持完整的UTF-8字符集,而utf8只是一个有限的子集)
  • *最好关闭 *仿真模式 (为了方便起见,有人会说更好的安全性)
  • 连接错误 是更好地被捕获并重新抛出,以隐藏堆栈跟踪数据库的凭据-为更好的安全性
  • PDO类名称最好以全局 名称空间 作为前缀,因此代码将能够在名称空间环境中工作。

因此,您在这里:

$options = [
    \PDO::ATTR_ERRMODE            => \PDO::ERRMODE_EXCEPTION,
    \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
    \PDO::ATTR_EMULATE_PREPARES   => false,
];
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
try {
     $pdo = new \PDO($dsn, $username, $password, $options);
} catch (\PDOException $e) {
     throw new \PDOException($e->getMessage(), (int)$e->getCode());
}

请注意,如果将此代码放在函数或类的方法中,请勿将html" target="_blank">数据库凭据作为原始参数发送,而应将它们作为数组发送或在函数内部检索它们。否则,它们将再次出现在堆栈跟踪中。



 类似资料:
  • 问题内容: 给出以下无害的小清单: 我的目标是使用以下方法之一以Python方式串联小恶魔: A. plain ol’string函数来完成工作,简短,没有导入 B.lambda,lambda,lambda C.全球化(什么都不做,什么都导入) 请提出其他蟒蛇般的方法来完成这项宏大的任务。 请对解决方案进行排名(python级别),并对解决方案进行评分,并给出简洁的解释。 在这种情况下,最Pyth

  • 问题内容: ?将转换为并对其进行迭代?还有吗 问题答案: 我使用for循环来迭代字符串,并使用它来获取每个字符以进行检查。由于是通过数组实现的,因此该方法是恒定时间操作。 那就是我会做的。在我看来,这是最简单的。 就正确性而言,我认为这不存在。这完全取决于你的个人风格。

  • 问题内容: 我正在寻找一种将不同行中的字符串聚合为一行的方法。我希望在许多不同的地方进行此操作,因此具有促进此操作的功能会很好。我已经尝试过使用和解决方案,但它们只是不适合我。 字符串聚合将执行以下操作: 我看过CLR定义的聚合函数来代替和,但是显然 SQL Azure 不 支持CLR定义的东西,这让我很痛苦,因为我知道能够使用它可以解决很多问题。我的问题。 有什么可能的解决方法,或者类似的最优方

  • 问题内容: ?将转换为并对其进行迭代?还有吗 问题答案: 我使用for循环来迭代字符串,并使用它来获取每个字符以进行检查。由于是通过数组实现的,因此该charAt()方法是恒定时间操作。 那就是我会做的。在我看来,这是最简单的。 就正确性而言,我认为这不存在。这完全取决于您的个人风格。

  • 本文向大家介绍javascript中拼接HTML字符串的最快、最好的方法,包括了javascript中拼接HTML字符串的最快、最好的方法的使用技巧和注意事项,需要的朋友参考一下 第一种:逐个字符串相加 这种最常见的,但是效率最低!代码逻辑相对来说复杂。 第二种:逐个 push 进数组 比上一种方法稍微快一些,但还是不够好… 第三种:直接join() 使用原生的方法(比如 join()),不管它后

  • 问题内容: 由于无法更改,因此我想知道如何更有效地连接字符串? 我可以这样写: 或像这样: 问题答案: 将字符串附加到字符串变量的最佳方法是使用+或+=。这是因为它可读且快速。它们的速度也一样快,你选择的是一个品味问题,后者是最常见的。以下是该timeit模块的计时: 但是,那些建议拥有列表并附加到列表然后再连接这些列表的人之所以这样做,是因为与扩展字符串相比,将字符串附加到列表可能非常快。在某些